string并且
[]byte是不同的类型,但是它们可以相互转换:
3。将一个字节的切片转换为字符串类型会产生一个字符串,其连续字节是该切片的元素。
4。将字符串类型的值转换为字节片的类型会产生一个片,其连续元素是字符串的字节。
博客:数组,切片(和字符串):’append’的机制:
字符串实际上非常简单:它们只是字节的只读切片,而该语言还提供了一些额外的语法支持。
另请阅读:Go中的字符串,字节,符文和字符
什么时候使用另一个?
取决于您的需要。字符串是不可变的,因此它们可以共享,并且您可以确保它们不会被修改。
字节片可以修改(表示后备数组的内容)。
另外,如果您需要经常将a转换
string为a
[]byte(例如,因为需要将其写入
io.Writer()),则应首先考虑将其存储为a
[]byte。
另请注意,您可以具有
string
常量,但没有切片常量。这可能是一个小的优化。另请注意:
len(s)如果s为字符串常量,则表达式为常量。
同样,如果您使用的是已经编写的代码(标准库,第三者软件包或您自己的代码),则在大多数情况下,系统会提供必须传递或返回的参数和值。例如,如果您从读取数据
io.Reader,则必须
[]byte具有必须通过的数据才能接收读取的字节,因此不能使用
string。
这个例子:
bb := []byte{'h','e','l','l','o',127}这里发生的是,您使用了一个复合文字(切片文字)来创建和初始化一个新的类型切片
[]byte(使用Short变量声明)。您指定了常量以列出切片的初始元素。您还使用了一个字节值
127-取决于平台/控制台-
可能具有也可能没有视觉表示。


![Go中的字符串和[] byte有什么区别? Go中的字符串和[] byte有什么区别?](http://www.mshxw.com/aiimages/31/417753.png)
