Go 语言规范中关于 Assignability 的说明:
其中第二条说,如果 x
的类型 V
和类型 T
有相同的 underlying types,并且 V
和 T
至少有一个不是 defined type,就可以将 x
赋值给类型为 T
的变量。
规范中提到了用 type
定义的新类型是 defined type, 但是没说什么不是 defined type... 我的理解是 Go 内置的类型就不是 defined type,但是下面这个例子:
type T int
var t T
var x int = 1
t = x // 会报错
t
和 x
的 underlying type 都是 int
,而且 int
不是 defined type,按规范应该是可以赋值的,但实际上是会报错的。是我哪里理解错了呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.