发布网友 发布时间:2022-04-21 23:54
共1个回答
热心网友 时间:2023-07-16 17:13
1 .是一个指针,指向某个数组的首地址
1 .是一个切片slice。一个封装了数组的结构体
2 .slice结构
1 .想要在本身原地修改,就只能使用[]byte
2 .string不能为nil,想要返回nil表达特殊含义,只能使用[]byte
3 .string可以直接比较,而[]byte不可以,所以[]byte不可以当map的key值。
4 .因为无法修改string中的某个字符,需要粒度小到操作一个字符时,用[]byte
5 .[]byte切片这么灵活,想要用切片的特性就用[]byte
6 .需要大量字符串处理的时候用[]byte,性能好很多
1 .string的指针指向的内容是不可以改变的,所以每次更改一次字符串,都需要重新分配内存。之前的内存还需要GC收回,这是导致string效率底下的根本原因
2 .如果我们保存的字符在 ASCII 表的,比如[0-1, a-z,A-Z..]直接可以保存到 byte
3 .如果我们保存的字符对应码值大于 255,这时我们可以考虑使用 int 类型保存
1.string:只读的采用utf8编码的字节切片,因此len获得的长度并不是字符个数,而是字节个数
2.rune是int32的别名,代表字符的unicode编码,采用4个字节存储。将string转为rune就意味着任何一个字符都采用4个字节来存储unicode值,这样每次遍历返回的时候就是返回unicode值,而不是字节,解决乱码的问题
3 .byte:字节切片,可变的
3.utf8和unicode区别
1 .这三种数据类型,在底层有相同的内存结构,在上层,因为语法的*而有不同的行为表现
2 .数组
3 .字符串
4 .切片