package main
import "fmt"
func main() {
angel := "Heros never die"
angelBytes := []byte(angel)
for i := 5; i <= 10; i++ {
angelBytes[i] = ' '
}
fmt.Println(string(angelBytes))
}
定义一个angle 字符串,转换为字符串数组,切angle。使用string(angleBytes)
将字符串angel转为字符串数组,通过切片替换never为空
字符串不可变有很多好处,如天生线程安全,使用的都是只读对象,无须加锁。方便
内存共享,不使用copy On write等技术,字符串hash值也只需要制作一份
所以,代码中实际修改的是[]byte,[]byte在golang语言中可变的,本身就是一个切片
总结:
GO语言的字符串是不可变的
修改字符串时,可以将字符串转换为[]byte进行修改
[]byte和string可以通过强制类型转换互转