在学习过程中,发现一个有趣的现象:
定义这样一个结构
type Bird struct { Name string }
main中有如下代码:
bird1 := Bird{Name:"Big"} bird2 := new(Bird) bird2.Name = "Small" fmt.Println(reflect.TypeOf(bird1).String()) fmt.Println(reflect.TypeOf(bird2).String())
执行之后可以看到结果
InterfaceDemo.Bird *InterfaceDemo.Bird
可以看到上面两种方式,结果不一致。
总结:加&符号和new的是指针对象,没有的则是值对象,这点和C#、java不一致,在传递对象的时候要根据实际情况来决定是要传递指针还是值。