Go 中的字符串是不可变的,这意味着一旦创建,就无法修改其内容。从以下错误中可以明显看出这一点:“无法分配给 new_str[i]”。
要更改字符串的内容,必须首先将其转换为 []byte 切片。与字符串不同,字节切片确实是可变的。然后,您可以对字节切片执行所需的修改,并使用 string(...) 函数将其转换回字符串。
这是代码的修改版本,它使用字节切片将小写字符更改为大写:
<code class="go">func ToUpper(str string) string { bytes := []byte(str) for i := 0; i < len(str); i++ { if bytes[i] >= 'a' && bytes[i] <= 'z' { chr := uint8(rune(bytes[i]) - 'a' + 'A') bytes[i] = chr } } return string(bytes) }</code>
现在,当您调用 ToUpper("cdsrgGDH7865fxgh") 时,它会正确地将所有小写字符转换为大写。
以上是## 为什么我无法在 Go 中就地修改字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!