Go 报错:字符串不可变 —— cannot assign to xxx

Go

为什么下面的程序会编译出错?

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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://yourbasic.org/golang/gotcha-stri...

译文地址:https://learnku.com/go/t/46493

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!