我不明白如何go比较匿名结构。我试图理解这段代码:package mainimport ( "fmt")type foo struct { bar string}func main() { var x struct { bar string } var y foo fmt.Println(x == y) // this prints true equals(x, y) // this prints false}func equals(a, b interface{}) { fmt.Println(a == b)}为什么会x == y产生收益true?它们具有不同的类型,因此我希望它们无法进行比较。而且,既然它们是平等的,为什么将它们强制转换为interface{}使它们不平等?
2 回答
繁星coding
TA贡献1797条经验 获得超4个赞
它们具有不同的类型但具有可比性,因为结构具有相同的字段名称/类型。如果您尝试重命名该字段,它将无法编译。
它们与 interface{} 值相当,但它们的动态类型不同 - 您可以使用 fmt%T
动词检查这一点
http://play.golang.org/p/x0w30RIb5a
添加回答
举报
0/150
提交
取消