new()和“常规”分配之间有区别吗?

new()和“常规”分配之间有区别吗?,第1张

new()和“常规”分配之间有区别吗?

不,他们返回的是一样的,

package mainimport "fmt"import "reflect"type Vector struct {    x   int    y   int}func main() {    v := &Vector{}    x := new(Vector)    fmt.Println(reflect.TypeOf(v))    fmt.Println(reflect.TypeOf(x))}

结果:

*main.Vector*main.Vector

邮件列表上有一些争论,两者都令人困惑:

https://groups.google.com/forum/?fromgroups=#!topic/golang-
nuts/GDXFDJgKKSs

需要注意的一件事:

new()是获取指向未命名整数或其他基本类型的指针的唯一方法。您可以编写“ p:= new(int)”,但不能编写“ p:=&int
{0}”。除此之外,这是一个优先事项。

来源:https : //groups.google.com/d/msg/golang-
nuts/793ZF_yeqbk/-zyUAPT-e4IJ



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5462999.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存