在golang中,为什么`a:= [] int32(“hello”)`工作但不是`a:= [] int(“hello”)`?

时间:2017-07-09 14:14:45

标签: string go type-conversion slice

瓷砖是我的问题。在Go中,为什么a := []int32("hello")有效但a := []int("hello")无效?

1 个答案:

答案 0 :(得分:4)

因为规范允许将string值转换为rune切片([]rune),runealiasint32 (他们是一样的)。这是第一个conversion  作用:

  

将字符串类型的值转换为符文类型切片会生成包含字符串的各个Unicode代码点的切片。

基本上是string => []rune转换将文本的UTF-8字节(这是Go将字符串存储在内存中)解码为Unicode代码点(rune s)。

规范不允许将string转换为int切片,因此第二个是编译时错误。