这两个结构之间的区别除了不被认为是等效的以外,还有什么区别?
package main
func main() {}
func f1(s struct{a int;b int}) { f2(s) }
func f2(s struct{b int;a int}) {}
$ go run a.go
# command-line-arguments
./a.go:3: cannot use s (type struct { a int; b int }) as type struct { b int; a int } in argument to f2
注意:这确实可以编译:
package main
func main() {}
func f1(s struct{a int;b int}) { f2(s) }
func f2(s struct{a int;b int}) {}
最佳答案
这将影响反射,就像 func (v Value) Field(i int) Value
一样:
第一个结构中的第一个字段“a”与第二个结构中的第一个字段不同。
这也会影响marshaler methods (encoding package)和ojit_a的序列化。
关于types - struct {a int; b int}和struct {b int; a int}有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25508759/