Menukar Rune kepada Rentetan dalam Golang
Anda mempunyai kebimbangan mengenai menghantar rune ke dalam rentetan dan mencetaknya, menghadapi aksara yang tidak ditentukan. Mari kita mendalami isu ini dan cari penyelesaian.
Pertama, dalam kod asal anda, anda menggunakan Scanner.Scan() untuk membaca rune. Walau bagaimanapun, kaedah ini direka bentuk untuk mengendalikan token atau rune dengan nilai token khas, bukan rune bacaan sebenar itu sendiri.
Untuk membaca rune tunggal, sebaliknya anda harus menggunakan Scanner.Next():
c := b.Next() fmt.Println(c, string(c), strconv.QuoteRune(c))
Kod ini kini akan membaca dan mencetak rune dengan betul sebagai integer, perwakilan aksaranya dan petikannya versi.
Sebagai alternatif, jika anda ingin menukar rune kepada rentetan sahaja, anda boleh menggunakan penukaran jenis mudah. Rune ialah alias untuk int32 dan menukar nombor integer kepada rentetan menjana perwakilan UTF-8nya.
r := rune('a') fmt.Println(r, string(r))
Untuk mengulangi rune rentetan, anda boleh menggunakan gelung untuk ... julat:
for i, r := range "abc" { fmt.Printf("%d - %c (%v)\n", i, r, r) }
Anda juga boleh menukar rentetan kepada kepingan rune menggunakan []rune("abc").
Pilihan lain ialah menggunakan utf8.DecodeRuneInString().
Dalam kod asal anda menggunakan Scanner.Scan(), anda secara tidak sengaja mengkonfigurasi mod pengimbas kepada mengendalikan token Go, yang termasuk pengecam seperti "a". Memanggil Scan() kemudian mengembalikan pengimbas.Kenal pasti dan cetak teks pengecam, menghasilkan aksara yang tidak ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Rune kepada Rentetan di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!