栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Go中的字符串和[] byte有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go中的字符串和[] byte有什么区别?

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
-取决于平台/控制台-
可能具有也可能没有视觉表示。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号