字符串
var a = "hello,world"
1.字符串是常量,可以通过类似数组的索引访问其字节单元,但不能修改某个值。
var a = "hello world"
b := a[0]
a[1] = 'a' //error
2.字符串转换为切片[]byte(s)要慎用,尤其是数据量大的时候(每转换一次都要转换内容)
a := "hello world"
b := []byte(a)
3.字符串尾部不包含NULL字符
4.字符串类型底层实现是一个二元的数据结构,一个指向字节数组的起点,另一个是长度
// runtime/string.go
type stringStruct struct{
str unsafe.Pointer //指向底层字节数组的指针
len int //字节数组长度
}
5.基于字符串创建的切片和原字符串指向相同的底层字符数组,一样不能修改,对于字符串的切片操作返回的字串仍然是string,而非slice,如:
a := "hello world"
b := a[0:4]
c := a[1:]
d := a[:4]
6.字符串和切片的转换,字符串可以转换为字节数组,也可以转换为Unicode的字数组:
a := "hello,世界"
b := []byte(a)
c := []rune(a)
rune类型
rune表示Unicode编码的字符,在Go内部是int32类型的别名,占用4个字节。
Go语言默认的字符编码是UTF-8类型。
这只是我的学习笔记,更多可以看我:Github:https://github.com/Pumnn1ayLee/Go_Note