【发布时间】:2017-12-13 07:38:29
【问题描述】:
瓷砖是我的问题。在 Go 中,为什么 a := []int32("hello") 可以工作,而 a := []int("hello") 不行?
【问题讨论】:
标签: string go type-conversion slice
瓷砖是我的问题。在 Go 中,为什么 a := []int32("hello") 可以工作,而 a := []int("hello") 不行?
【问题讨论】:
标签: string go type-conversion slice
因为规范允许将string 值转换为rune 切片([]rune),而rune 是alias 到int32(它们是一回事)。这是第一个conversion
确实:
将字符串类型的值转换为 runes 类型的切片会产生一个切片,其中包含字符串的各个 Unicode 代码点。
基本上string => []rune 转换将文本的 UTF-8 字节(这是 Go 在内存中存储字符串的方式)解码为 Unicode 代码点 (runes)。
并且规范不允许将string 转换为int 切片,因此第二个是编译时错误。
【讨论】: