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

posted @ 2019-02-14 14:16  奋斗的大橙子  阅读(2244)  评论(0)    收藏  举报