Go 报错:字符串不可变 —— cannot assign to xxx
为什么下面的程序会编译出错?
s := "hello"
s[0] = 'H'
fmt.Println(s)
../main.go:3:7: cannot assign to s[0]
答案
Go 语言中字符串是不可变的,表现出来的行为就类似于一个只读 byte slice(具有一些额外的属性)。
要更新字符串的数据,可以改用 rune slice。
buf := []rune("hello")
buf[0] = 'H'
s := string(buf)
fmt.Println(s) // "Hello"
如果字符串仅包含 ASCII 字符,则也可以使用 byte slice。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。