【发布时间】:2014-10-20 08:37:18
【问题描述】:
这两个结构除了不被视为等效之外,还有什么区别?
package main
import "fmt"
func main() {
a := struct{int}{1}
b := struct{int int}{1}
fmt.Println(a,b)
a.int=2
b.int=a.int
fmt.Println(a,b)
//a = b
}
它们看起来一样:
$ go run a.go
{1} {1}
{2} {2}
但是如果你取消注释a = b,它会说:
$ go run a.go
# command-line-arguments
./a.go:10: cannot use b (type struct { int int }) as type struct { int } in assignment
然而struct{a,b int} 和struct{a int;b int} 是等价的:
package main
func main() {
a := struct{a,b int}{1,2}
b := struct{a int;b int}{1,2}
a = b
b = a
}
?
【问题讨论】: