这两种结构之间有什么区别,除了它们不被认为是等价的?
package main
func main() {}
func f1(s struct{a int;b int}) { f2(s) }
func f2(s struct{b int;a int}) {}
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
注意:这确实编译:
package main
func main() {}
func f1(s struct{a int;b int}) { f2(s) }
func f2(s struct{a int;b int}) {}
Run Code Online (Sandbox Code Playgroud)
"结构'字段的顺序在低级别上很重要"如何?
这将影响反射,如func (v Value) Field(i int) Value
:
Field返回struct v的第i个字段
第一结构中的第一个字段'a'在第二个结构中的第一个字段'a'不同.
这也将影响使用编组方法(编码包)的序列化.