初学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}返回的是一个类型
详细还需要深入学习