Golang string slice
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
切片的形式, 然后转为string
func main() { str := "hello" bytes := []byte(str) //如果存在中文使用[]rune(), 一个中文占3个字节 bytes[0] = 'a' //string是一种基本类型 str = string(bytes) fmt.Println(str) //aello }