【发布时间】:2018-03-28 15:00:27
【问题描述】:
在 Golang 规范中:
type (
T0 []string
T1 []string
)
它说 T0 和 T1 是不同的,因为它们是具有不同声明的命名类型。但是有一个规则: 如果两个命名类型的类型名称源自相同的 TypeSpec,则它们是相同的。 那么为什么 T0 和 T1 不一样呢?
编辑:
在规范中它还说:
类型声明将标识符(类型名称)绑定到新类型 具有与现有类型相同的基础类型和操作 为现有类型定义的也为新类型定义。 该 新类型与现有类型不同。
【问题讨论】:
-
@JimB:“
Two slice types are identical if they have identical element types。”不适用于已定义类型:Type identity。A defined type is always different from any other type. -
@shx:Go 编程语言规范的当前版本位于golang.org/ref/spec。你从哪里得到你的报价?
-
@peterSO,是的,这并不是一个答案,只是想弄清楚这句话最初来自哪里以及为什么这是一个问题。