在Go 中,字串是不可變的,這意味著它們的內容一旦創建就無法修改。嘗試更改現有字串時,這可能會令人沮喪,但使用 fmt 套件有一個簡單的解決方案。
考慮以下程式碼:
<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>
此程式碼嘗試將小寫字元轉換為大寫在字串中,但你會遇到錯誤:「無法指派給 new_str[i]」。這是因為字串是不可變的。
為了克服這個問題,我們可以將字串轉換為位元組切片並進行更改:
<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>
這裡, []byte(str) 建立字串中的位元組切片,string(new_str) 將修改後的位元組切片轉換回字串。
透過此更改,您現在可以更改字串並將小寫字元隱藏為大寫:
fmt.Println(ToUpper("cdsrgGDH7865fxgh")) // Output: CDSRGgdh7865FXGH
以上是在知道 Go 中的字串是不可變的情況下,如何修改它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!