Dalam Go, rentetan tidak boleh diubah, bermakna kandungannya tidak boleh diubah suai setelah dibuat. Ini boleh mengecewakan apabila cuba mengubah rentetan sedia ada, tetapi terdapat penyelesaian mudah menggunakan pakej fmt.
Pertimbangkan kod berikut:
<code class="go">package main import "fmt" func ToUpper(str string) string { new_str := str for i := 0; i < len(str); i++ { if str[i] >= 'a' && str[i] <= 'z' { chr := uint8(rune(str[i]) - 'a' + 'A') new_str[i] = chr } } return new_str } func main() { fmt.Println(ToUpper("cdsrgGDH7865fxgh")) }</code>
Kod ini cuba menggunakan huruf besar huruf kecil dalam rentetan, tetapi anda akan menghadapi ralat: "tidak boleh menetapkan kepada new_str[i]". Ini kerana rentetan tidak boleh diubah.
Untuk mengatasinya, kita boleh menukar rentetan itu kepada kepingan bait dan sebaliknya mengubahnya:
<code class="go">func ToUpper(str string) string { new_str := []byte(str) for i := 0; i < len(str); i++ { if str[i] >= 'a' && str[i] <= 'z' { chr := uint8(rune(str[i]) - 'a' + 'A') new_str[i] = chr } } return string(new_str) }</code>
Di sini, []bait(str) mencipta hirisan bait daripada rentetan dan rentetan(new_str) menukar hirisan bait yang diubah suai kembali kepada rentetan.
Dengan perubahan ini, anda kini boleh mengubah rentetan dan aksara kecil terselindung kepada huruf besar:
fmt.Println(ToUpper("cdsrgGDH7865fxgh")) // Output: CDSRGgdh7865FXGH
Atas ialah kandungan terperinci Bagaimanakah Saya Mengubah Suai Rentetan dalam Go, Mengetahui Ia Tidak Boleh Berubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!