Dalam golang, jenis rentetan ialah jenis yang tidak berubah, iaitu nilainya tidak boleh diubah suai secara langsung. Tetapi dalam senario kadangkala kita perlu menukar jenis rentetan ke dalam urutan aksara yang boleh diubah suai (slice). Artikel ini akan memperkenalkan dua kaedah untuk mencapai penukaran ini.
Kaedah 1: Gunakan pakej rentetan
Pakej rentetan ialah pakej pemprosesan rentetan dalam pustaka standard golang, yang menyediakan kaedah untuk menukar rentetan menjadi kepingan. Pelaksanaan khusus adalah seperti berikut:
import "strings" func StringToSlice(s string) []rune { return []rune(s) }
Jenis rune digunakan dalam kaedah ini Jenis rune mewakili aksara Unicode dan boleh memasukkan aksara dalam bahasa Cina, Jepun, Korea dan bahasa lain. Dengan menghantar jenis rentetan kepada jenis rune, anda boleh mendapatkan urutan aksara yang boleh diubah suai (slice).
Berikut ialah contoh mudah yang menunjukkan penggunaan kaedah ini:
package main import ( "fmt" "strings" ) func StringToSlice(s string) []rune { return []rune(s) } func main() { s := "hello world" sl := StringToSlice(s) sl[0] = 'H' fmt.Println(sl) fmt.Println(strings.ToUpper(string(sl))) }
Keluaran program:
[72 101 108 108 111 32 119 111 114 108 100] HELLO WORLD
Dengan menghantar hirisan yang dikembalikan oleh fungsi StringToSlice kepada fungsi rentetan.ToUpper , kita boleh menukar rentetan kepada semua huruf besar.
Kaedah 2: Menggunakan kepingan bait
Selain menggunakan pakej rentetan, kita juga boleh menukar jenis rentetan menjadi kepingan bait, dan kemudian menukar kepingan bait menjadi kepingan jenis rune. Pelaksanaan khusus adalah seperti berikut:
func StringToSlice(s string) []rune { bs := []byte(s) rs := make([]rune, len(bs)) for i, b := range bs { rs[i] = rune(b) } return rs }
Dalam kaedah ini, kami menggunakan kepingan jenis bait Jenis bait mewakili integer tidak bertanda 8-bit. Dengan menghantar jenis rentetan kepada kepingan jenis bait, kita boleh mendapatkan urutan yang disimpan dalam bait. Kami melintasi kepingan jenis bait, menukar setiap elemen kepada jenis rune, dan akhirnya mengembalikan kepingan jenis rune.
Berikut ialah contoh menggunakan kaedah ini:
package main import ( "fmt" ) func StringToSlice(s string) []rune { bs := []byte(s) rs := make([]rune, len(bs)) for i, b := range bs { rs[i] = rune(b) } return rs } func main() { s := "hello world" sl := StringToSlice(s) sl[0] = 'H' fmt.Println(sl) }
Keluaran program:
[72 101 108 108 111 32 119 111 114 108 100]
Sama seperti kaedah 1, kita juga boleh menukar kepingan kepada rentetan menggunakan rentetan. fungsi operasi rentetan yang disediakan oleh pakej melaksanakan operasi seperti penukaran kes rentetan.
Kesimpulan
Secara amnya, kami mengesyorkan menggunakan API yang disediakan oleh pakej rentetan untuk memproses rentetan dan urutan aksara, kerana ia bukan sahaja memberikan prestasi yang lebih baik, tetapi juga menyediakan lebih Pelbagai jenis keselamatan. Tetapi dalam beberapa kes khas, kepingan bait menyediakan kaedah pemprosesan yang lebih fleksibel yang boleh menyesuaikan diri dengan keperluan yang berbeza.
Atas ialah kandungan terperinci tali golang转slice. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!