Bagaimana cara mendapatkan output "E" daripada 69?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
Apakah Golang memiliki fungsi untuk mengubah karakter menjadi byte dan sebaliknya?
Literal string yang ditafsirkan adalah urutan karakter antara "" tanda kutip ganda menggunakan pengkodean UTF-8 (mungkin multi-byte) dari karakter individual. Dalam UTF-8, karakter ASCII adalah byte tunggal yang sesuai dengan 128 karakter Unicode pertama. String berperilaku seperti potongan byte. Rune adalah nilai integer yang mengidentifikasi titik kode Unicode. Karena itu,
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1])) // ASCII only
fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
}
Keluaran:
e
e
界
Baca:
Buka bagian Spesifikasi Bahasa Pemrograman di Konversi .
Bisa dilakukan dengan mengiris juga
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
CATATAN: Solusi ini hanya berfungsi untuk karakter ASCII.
"हैलो"[:1]
ini memberi AndaGo tidak memiliki tipe karakter seperti itu. byte sering digunakan untuk karakter ASCII, dan rune digunakan untuk karakter Unicode, tetapi keduanya hanyalah alias untuk tipe integer (uint8 dan int32). Jadi jika Anda ingin memaksanya untuk dicetak sebagai karakter, bukan angka, Anda perlu menggunakan
Printf("%c", x)
. The%c
spesifikasi format bekerja untuk setiap tipe integer.sumber
Anda juga dapat mencoba mengetik dengan string.
package main import "fmt" func main() { fmt.Println(string("Hello"[1])) }
sumber
Solusi umum untuk menafsirkan karakter sebagai string adalah
string("HELLO"[1])
.Solusi kaya juga berhasil, tentu saja.
sumber
Karakter string adalah rune, jadi untuk mencetaknya, Anda harus mengubahnya kembali menjadi String.
fmt.Print(string("HELLO"[1]))
sumber
Cobalah ini untuk mendapatkan karakter berdasarkan indeks mereka
package main import ( "fmt" "strings" ) func main() { str := strings.Split("HELLO","") fmt.Print(str[1]) }
sumber
Solusi lain untuk mengisolasi karakter dalam sebuah string
package main import "fmt" func main() { var word string = "ZbjTS" // P R I N T fmt.Println(word) yo := string([]rune(word)[0]) fmt.Println(yo) //I N D E X x :=0 for x < len(word){ yo := string([]rune(word)[x]) fmt.Println(yo) x+=1 } }
untuk array string juga:
fmt.Println(string([]rune(sArray[0])[0]))
// = baris yang diberi komentar
sumber
len("cafés")
>len([]rune("cafés"))
dan dapat mengubah string pada setiap iterasi untuk, O (n²). Lakukan sajafor _, r := range word { fmt.Printf("%c", r) }
. Jika Anda benar-benar ingin mengulang dengan indeksfor x := 0; x < limit; x++
. Harap pelajari dasar-dasar bahasa sebelum menjawab pertanyaan.