首页  >  文章  >  后端开发  >  ## 为什么我无法在 Go 中就地修改字符串?

## 为什么我无法在 Go 中就地修改字符串?

Linda Hamilton
Linda Hamilton原创
2024-10-27 10:25:30815浏览

## Why Can't I Modify a String in Place in Go?

为什么我无法在 Go 中修改字符串?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn