Rentetan dalam Go tidak boleh diubah, bermakna setelah dibuat, anda tidak boleh mengubah suai kandungannya. Ini jelas daripada ralat berikut: "cannot assign to new_str[i]".
Untuk menukar kandungan rentetan, anda mesti menghantarnya ke hirisan []bait dahulu. Tidak seperti rentetan, kepingan bait sememangnya boleh berubah. Anda kemudiannya boleh melakukan pengubahsuaian yang anda inginkan pada kepingan bait dan menghantarnya kembali ke rentetan menggunakan fungsi rentetan(...).
Berikut ialah versi diubah suai kod anda yang menggunakan kepingan bait untuk menukar aksara huruf kecil kepada huruf besar:
<code class="go">func ToUpper(str string) string { bytes := []byte(str) for i := 0; i < len(str); i++ { if bytes[i] >= 'a' && bytes[i] <= 'z' { chr := uint8(rune(bytes[i]) - 'a' + 'A') bytes[i] = chr } } return string(bytes) }</code>
Kini, apabila anda memanggil ToUpper("cdsrgGDH7865fxgh"), ia akan menukar semua aksara kecil kepada huruf besar dengan betul.
Atas ialah kandungan terperinci ## Mengapa Saya Tidak Boleh Mengubah Suai Rentetan di Tempat di Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!