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?
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?
Jawaban:
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 .
Bagaimana kalau begini ?
fmt.Printf("%c","HELLO"[1])
Seperti yang ditunjukkan Peter, untuk memungkinkan lebih dari sekadar ASCII:
fmt.Printf("%c", []rune("HELLO")[1])
Bisa dilakukan dengan mengiris juga
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
CATATAN: Solusi ini hanya berfungsi untuk karakter ASCII.
Go 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.
Anda juga dapat mencoba mengetik dengan string.
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1]))
}
Solusi umum untuk menafsirkan karakter sebagai string adalah string("HELLO"[1])
.
Solusi kaya juga berhasil, tentu saja.
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
len("cafés")
> len([]rune("cafés"))
dan dapat mengubah string pada setiap iterasi untuk, O (n²). Lakukan saja for _, r := range word { fmt.Printf("%c", r) }
. Jika Anda benar-benar ingin mengulang dengan indeks for x := 0; x < limit; x++
. Harap pelajari dasar-dasar bahasa sebelum menjawab pertanyaan.
"हैलो"[:1]
ini memberi Anda