gpt4 book ai didi

go - (惯用语?)new(T) 和 &T{...} 之间的区别?

转载 作者:IT王子 更新时间:2023-10-29 00:59:27 26 4
gpt4 key购买 nike

我开始玩 Go,对 new 函数有点恼火。它似乎非常有限,尤其是在考虑具有匿名字段或内联初始化的结构时。所以我通读了规范和 stumbled over the following paragraph :

Calling the built-in function new or taking the address of a composite literal allocates storage for a variable at run time.

所以我怀疑 new(T)&T{} 的行为方式完全相同,对吗?如果这是正确的,在什么情况下应该使用 new

最佳答案

是的,你是对的。 new 对结构没那么有用。但它与其他基本类型有关。 new(int) 将为您提供一个指向零值 int 的指针,您不能执行 &int{} 或类似操作。

无论如何,根据我的经验,您很少需要它,因此很少使用 new。您可以只声明一个普通的 int 并传递一个指向它的指针。事实上,这样做可能更好,因为您无需考虑在堆栈中分配还是在堆中分配,因为编译器会为您做出决定。

关于go - (惯用语?)new(T) 和 &T{...} 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28136763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com