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

将字符串类型转换为字节切片背后的语言规则是什么,以及此转换中实际执行的操作是什么?

将字符串类型转换为字节切片背后的语言规则是什么,以及此转换中实际执行的操作是什么?

Go
哆啦的时光机 2022-08-09 16:58:34
在Go中将字符串类型转换为字节切片是可以的,甚至听起来合乎逻辑,如下面的示例所示()。[]byte(s)问题是这种转换背后的规则是什么?此转换在哪里定义以使其适用?另外,这种转换的背后是什么,这意味着,幕后做了什么?在 中找不到它。builtin.go工作实例:package mainimport (    "fmt")func main() {    s := "A string"    myBytes := []byte(s) // The conversion    fmt.Println(s)    fmt.Println(myBytes)}如果我用它替换它失败,我理解为不是。这意味着转换是特定的,那么在哪里定义特异性?[]byte(s)[]int(s)cannot convert s (type string) to type []intintuint8/byte
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

如果您对 Go 编译器/运行时中发生这种情况的位置感兴趣,请查看函数:https://golang.org/src/runtime/string.go?s=4341:4393#L155runtime.stringtoslicebyte

对此函数的调用由编译器生成(尝试运行以查看它)go tool compiler -l -S <your-go-file.go>

[请注意,在撰写本文时,在 Go 1.15 中,情况确实如此,将来可能会更改]


查看完整回答
反对 回复 2022-08-09
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

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