美文网首页
Go语言如何修改字符串呢

Go语言如何修改字符串呢

作者: 码二哥 | 来源:发表于2020-01-25 19:15 被阅读0次

参考:
http://c.biancheng.net/view/39.html

关键词

  • 无法直接修改字符串的内容 ?

    • 不能修改,你想一想,这样的话,用户读取的内容都是一样的,是不是线程安全
  • 可以间接的方式修改字符串的内容

  • 为什么在Go语言中也无法直接修改字符串的内容?为什么这么设计呢?

1、通过间接的方式修改字符串的内容?

例如:


func TestModifyString(t *testing.T)  {
    oldStr := "hello world"
    fmt.Printf("--1-->%v\n", &oldStr)

    oldStrBytest := []byte(oldStr)

    for i:=3; i<8 ; i++  {
        oldStrBytest[i] = '@'
    }

    oldStr = string(oldStrBytest)
    fmt.Printf("--2-->%v\n", &oldStr)

    for _, k := range oldStr  {
        fmt.Printf("%c", k)
    }

    fmt.Println()
}
Go语言中如何修改字符串.png

2、为什么字符串不能直接修改呢?

会有很多好处

  • 天生线程安全

    • 用户使用的都是只读对象, 无须加锁
  • 方便共享内存,避免使用了写时复制(Copy On Write)等技术

  • 字符串hash值也只需要制作一份

相关文章

网友评论

      本文标题:Go语言如何修改字符串呢

      本文链接:https://www.haomeiwen.com/subject/apbrthtx.html