【发布时间】:2020-01-20 00:22:03
【问题描述】:
在 C 语言中,我们将字符串的字符定义为 Char。所以我想在 Go 中改变一个字符串的字符。
if sum%11 != int(str[strlen-1]) {
str[strlen-1] = byte(sum % 11)
//fmt.Printf("%T %T\n", str[strlen-1], byte(sum%11))
} else {
fmt.Println(sum)
}
但是会报错“cannot assign to str[strlen - 1]”。 str[strlen-1] 和 byte(sum%11) 都是 uint8。为什么是错的?我应该如何转换?
【问题讨论】:
-
字符串是不可变的,但切片不是。如果您正在处理二进制数据,请先将字符串转换为
[]byte或[]uint8。如果您正在处理 UTF-8 编码的文本,请转换为[]rune(rune 是 uint32 的别名)。如果您要处理任何其他文本编码,则只能自己处理。
标签: go