在 Go 語言中,字符串的內容是不能修改的,也就是說,你不能用 s[0] 這種方式修改字符串中的 UTF-8 編碼,如果你一定要修改,那麼你可以將字符串的內容複製到一個可寫的緩衝區中,然後再進行修改。這樣的緩衝區一般是 []byte 或 []rune。如果要對字符串中的字節進行修改,則轉換爲 []byte 格式,如果要對字符串中的字符進行修改,則轉換爲 []rune 格式,轉換過程會自動複製數據。
修改字符串中的字節(用 []byte):
func main() {
s := “Hello 世界!”
b := []byte(s) // 轉換爲 []byte,自動複製數據
b[5] = ‘,’ // 修改 []byte
fmt.Printf("%s\n", s) // s 不能被修改,內容保持不變
fmt.Printf("%s\n", b) // 修改後的數據
}
修改字符串中的字符(用 []rune):
func main() {
s := “Hello 世界!”
r := []rune(s) // 轉換爲 []rune,自動複製數據
r[6] = ‘中’ // 修改 []rune
r[7] = ‘國’ // 修改 []rune
fmt.Println(s) // s 不能被修改,內容保持不變
fmt.Println(string®) // 轉換爲字符串,又一次複製數據
}