【发布时间】:2021-09-06 16:15:45
【问题描述】:
我有以下 2 个结构:
func main() {
type A struct {
v int
}
type B struct {
v int
}
var b B = A{}
}
分配var b B = A{} 失败并显示错误消息:
不能使用 'A{}'(类型 A)作为类型 B
但在golang spec:Type identity 中它说:
如果两个结构类型具有相同的字段序列,并且相应的字段具有相同的名称、相同的类型和相同的标签,则它们是相同的。来自不同包的非导出字段名称总是不同的。
所以,我希望 A 和 B 类型相同。在spec:Assignability 中写道:
如果以下条件之一适用,则值 x 可分配给 T 类型的变量(“x 可分配给 T”):
- x 的类型与 T 相同。
鉴于所有这些信息,我倾向于认为分配应该成功,因为 A{} 的类型与 B 相同,但显然我遗漏了一些东西。
那么,我在这里缺少什么来了解错误消息的根本原因?
【问题讨论】: