Go语言中使用new初始化对象和直接字面量方式初始化的区别
在学习过程中,发现一个有趣的现象:
定义这样一个结构
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不一致,在传递对象的时候要根据实际情况来决定是要传递指针还是值。

浙公网安备 33010602011771号