瓷砖是我的问题。在Go中,为什么a := []int32("hello")
有效但a := []int("hello")
无效?
答案 0 :(得分:4)
因为规范允许将string
值转换为rune
切片([]rune
),rune
是alias到int32
(他们是一样的)。这是第一个conversion
作用:
将字符串类型的值转换为符文类型切片会生成包含字符串的各个Unicode代码点的切片。
基本上是string
=> []rune
转换将文本的UTF-8字节(这是Go将字符串存储在内存中)解码为Unicode代码点(rune
s)。
规范不允许将string
转换为int
切片,因此第二个是编译时错误。