3 回答

TA贡献1796条经验 获得超7个赞
发生这种情况是因为chars它实际上是一个字符串并且是不可变的。如果您适当地声明它(作为字节切片),那么您可以在尝试时分配给它。这是一个例子;
package main
import "fmt"
func main() {
var chars = []byte{'a', 'b', 'c', 'd', 'e', 'f'}
fmt.Println(string(chars[3]))
fmt.Printf("%T\n", chars)
chars[3] = 'z'
fmt.Println(string(chars))
}
https://play.golang.org/p/N1sSsfIBQY
或者,您可以使用重新切片,如另一个答案中所示。

TA贡献2011条经验 获得超2个赞
使用切片索引删除索引处的字符,并在那里放置一个新字符。
package main
import "fmt"
func main() {
var chars = "abcdef"
fmt.Println(string(chars[3]))
chars = chars[:3] + "z" + chars[3+1:]
fmt.Println(string(chars[3]))
}
输出:
d
z
[:3]选择切片中从开始到索引 3 的所有内容,并且 [3+1:] 选择从索引 (3+1) 到切片结尾的所有内容。将您想要的字符放在两个语句之间并将它们全部放在一起,以获得在特定索引处替换字符的效果。
如果要替换特定字符(即字母“b”的所有(或部分)实例),可以使用strings.Replace函数
- 3 回答
- 0 关注
- 461 浏览
添加回答
举报