初学go,实例化一个对象的时候,搞得有点晕,以前学php,需要一个对象之间new一个即可,但是在go里面有三种方法,如下
a:=new(user) b:=&user{} c:=user{}
好似这三种方法都可以实现,这是什么原因呢,区别在哪里?
ok,请看下面例子
package main import ( "fmt" ) type user struct { id int `1123` } func main() { a := &user{} a.id = 111 b := user{} b.id = 222 c := new(user) c.id = 333 fmt.Println(a, b, c) }
运行后结果如下
&{111} {222} &{333}
现在基本清楚,new(user)和 &user{}这两种方法返回的数据都是一样的,那么这这两种数据究竟有什么不同?我们应该在什么场景使用呢?
百度了一下
&{111}返回的是实例化的对象的指针
{222}返回的是一个类型
详细还需要深入学习