类型标识规则规定:Two named types are identical if their type names originate in the same TypeSpec我不太明白两个类型名称如何起源于同一个 TypeSpec。你能解释一下或者给我举个例子吗?
2 回答
jeck猫
TA贡献1909条经验 获得超7个赞
只有一个类型名称可以源自 TypeSpec。这就是重点。所以
type Foo int64
var x Foo
var y Foo
那么两个Foos 都源自相同的 TypeSpec,因此它们是相同的Foos。
但是,如果您有两个不同的文件(在不同的包中):
前:
type Foo int64
var x Foo
b.去:
type Foo int64
var y Foo
那么Foo这种情况下的两个s就不一样了。尽管它们是相同的类型名称,但它们源自不同的 TypeSpec。这样做的结果是,类型x和y不相同(且因此x = y不进行强制转换是不允许的)。
HUH函数
TA贡献1836条经验 获得超4个赞
Two named types are identical if their type names originate in the same TypeSpec
事实上,在 Go 代码中不能有两个相同的命名类型。因为在 Go 代码中,originate in the same TypeSpec
意味着相同的类型。说一种类型与自身相同是没有意义的。
但是我们确实有不同的命名类型,它们是相同的:byte 和 uint8;符文和 int32,根据 规范
只能在编译器中为预先声明的类型执行此操作。
注意:在 Go 1.9 中,将有一个名为:类型别名/别名声明的新功能。使用此功能,可以声明相同的不同命名类型。参考讲Go 1.9
- 2 回答
- 0 关注
- 345 浏览
添加回答
举报
0/150
提交
取消