在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 回答
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
温温酱
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 中,情况确实如此,将来可能会更改]
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消