类型标识规则规定:
Two named types are identical if their type names originate in the same TypeSpec
我不太了解两个类型名称是如何在同一TypeSpec中产生的。您能解释一下还是给我看一个例子?
一个类型名称只能源自TypeSpec。这就是重点。所以
type Foo int64 var x Foo var y Foo
则两个都Foo起源于相同的TypeSpec,因此它们是相同Foo的。
Foo
但是,如果您有两个不同的文件(位于不同的程序包中):
前:
type Foo int64 var x Foo
b.go:
type Foo int64 var y Foo
那么,Foo在这种情况下,两个s是不相同的。即使它们是相同的类型名称,它们也源于不同的TypeSpec。这样做的结果是,类型x和y不相同(且因此x = y不进行强制转换是不允许的)。
x
y
x = y