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不一致,在传递对象的时候要根据实际情况来决定是要传递指针还是值。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM