Golang string slice
-
string底层是一个byte数组, 因此string也可以进行切片处理func main() { //str底层是一个byte数组, 所以可以使用切片 str:="hello world" slice := str[:5] fmt.Println(slice)// hello } -
string和切片在内存中的形式
-
string是不可变的, 也就是说不能通过str[0] = 'A'方式来修改字符串func main() { str:="hello world" //切片源是什么类型, 切片就是什么类型, 如果切片源是数组,那么切片的类型也是数组 slice := str[:5]//等价于var slice string = str[:] slice[0] = 'a'//编译出错 } -
如果修改字符串可以将字符转为
[]byte或[]rune切片的形式, 然后转为stringfunc main() { str := "hello" bytes := []byte(str) //如果存在中文使用[]rune(), 一个中文占3个字节 bytes[0] = 'a' //string是一种基本类型 str = string(bytes) fmt.Println(str) //aello }