Golang new和make的区别
在Go语言中,在实例化时候对象时,有时候会看到new和make这两个关键字,那么它们俩有什么区别呢?都是在什么情况下才会用到这个两个关键字呢?
make仅支持slice、map、channel三种类型的初始化创建,不会初始化为零值,其返回值是所创建类型的本身,而不是新的指针引用。new对任意类型进行内存创建和初始化,并初始化为零值。其返回值是所创建类型的指针引用。
这样一来,我们知道了,new可以也可以初始化slice、map、channel三种类型,这需要根据实际情况来选择。但是大部分情况下,new函数用得不多。我们来看一个示例
1 | package main |
最终会打印出
1 | {Bob} &{Big Bob} &{} map[] &map[] |
我们可以看到,new返回的对象的指针,make返回的是当前对象。在结构体或者slice、map、channel三种类型初始化时,该选择哪种初始化方式,则需要根据自己的情况来定,一般我们对结构体都是通过{}来取代new进行初始化。
Golang new和make的区别


