为什么string不可变
为什么string不可变
总结
- Go 语言中的字符串和其他高级语言(Java、C#)一样,默认是不可变的(immutable)。
- 字符串不可变有很多好处:
- 如天生线程安全,大家使用的都是只读对象,无须加锁;
- 再者,方便内存共享,而不必使用写时复制(Copy On Write)等技术;
- 字符串 hash 值也只需要制作一份。
- 修改字符串时,可以将字符串转换为 []byte 进行修改。
- []byte 和 string 可以通过强制类型转换互转。
这样做的好处是 string 变得非常轻量,可以很方便的进行传递而不用担心内存拷贝(这也避免了内存带来的诸多问题)
GO 中的 string 类型一般是指向字符串字面量
字符串字面量存储位置是在虚拟内存分区的只读段上面,而不是堆或栈上
因此,GO 的 string 类型不可修改的
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!