各种形式的 int 切片的转换

假设我有这些类型


type MyInt int

type Ints []int

type MyInts []MyInt

使用这些类型我定义了一些变量


var is []int

var ints Ints

var myInts MyInts

变量is和ints具有不同的类型,但是编译器很乐意编译这一行


is = ints

类似is并且myInts有不同的类型,但在这种情况下,由于变量的类型不同,因此未编译以下行


is = myInts

那么,为什么在第一种情况下类型的差异不会停止 comlilation,而在第二种情况下它会停止呢?


这是一个重现案例的简单游乐场。


扬帆大鱼
浏览 67回答 1
1回答

慕雪6442864

有效分配的条件之一如下:V并且T具有相同的基础类型但不是类型参数并且V 或 T 中至少有一个不是命名类型。变量is的类型[]int是未命名类型,它的基础类型与自身相同,即[]int. 变量的类型ints,即Ints,是一个命名类型,它是底层类型[]int。因此,分配is = ints是有效的。变量myInts的类型MyInts是命名类型,它的基础类型是[]MyInt. 类型[]MyInt与不相同。[]int因此,分配is = myInts无效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go