new() 和 "&" 运算符的区别
Go 中 new() 函数和 "&" 内存地址运算符都用于分配内存。但是,它们的用法之间存在一些细微的差异。
功能比较
new() 和 & 运算符都返回指向新分配的内存地址的指针。但是,它们的语法不同:
类型分析
如提供的代码示例所示,反射分析表明 &Vector{} 和 new(Vector) 返回相同类型的指针,因为两者都是指向 Vector 结构体实例的指针。
历史混乱
Go 邮件列表之前讨论过有关同时使用 new() 和 & 进行内存分配的问题,因为它可能会导致混乱。
特殊情况
值得注意new() 是获取指向未命名基本类型(例如整数)的指针的唯一方法。这可以在以下示例中看到:
p := new(int) // valid p := &int{0} // invalid
偏好和使用
最终,使用 new() 和 & 进行内存分配之间的选择很大程度上取决于个人喜好问题。两种方法具有相同的功能并产生相同的结果。然而,重要的是要意识到这两个运算符之间的细微差别,并根据具体要求适当地使用它们。
以上是Go 中的'new()”函数和'&”内存地址运算符有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!