为了账号安全,请及时绑定邮箱和手机立即绑定

在 Golang 中使用已知文本字符串创建字节切片

在 Golang 中使用已知文本字符串创建字节切片

Go
翻过高山走不出你 2021-08-16 15:54:58
我有这个文本,我想把它放到一个字节片中:s := "There are these two young fish swimming along and they happen to meet an older fish swimming the other way"如果我写b := []byte("There are these two young fish swimming along and they happen to meet an older fish swimming the other way")据我了解,在运行时这将:用内存中的值创建一个字符串创建一个字节切片将字符串的内容复制到字节片中(根据需要重新分配)我可以将每个字符串值转换为它们的 ASCII 等效值并直接创建字节切片:b := []byte{84, 104, ... }虽然这不是很可读。我知道这里的例子有点微不足道,大多数计算机都可以在一瞬间完成,但我对此很好奇。编译器是否在编译时[]byte("blah")将其解释并转换为有效的字节片?如果字符串包含非 ASCII 字符,最佳解决方案会改变吗?
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

Go 将字符串作为字符串文字嵌入到可执行程序中。它使用该runtime.stringtoslicebyte函数在运行时将字符串文字转换为字节切片。


查看完整回答
反对 回复 2021-08-16
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

如果您[]byte从常量字符串初始化变量,看起来编译器足够聪明,不会创建中间字符串:相反,字节切片的后备数组直接从静态数据初始化,而不是先构造字符串变量。

有一个数据副本,但在构造可变类型时这是意料之中的。


查看完整回答
反对 回复 2021-08-16
  • 2 回答
  • 0 关注
  • 264 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信