首页 >后端开发 >Golang >## Go 中的 `new(MyStruct)` 与 `&MyStruct{}` 有什么区别?

## Go 中的 `new(MyStruct)` 与 `&MyStruct{}` 有什么区别?

Linda Hamilton
Linda Hamilton原创
2024-10-25 06:54:29790浏览

## What's the Difference: `new(MyStruct)` vs. `&MyStruct{}` in Go?

理解 new 在 Go 中的作用

与它在原始语言结构中的出现相反,new 在创建指针中找到了它的目的。虽然您不能直接使用 new 为基元指定值,但它成为为结构体等结构化数据类型分配内存的有用工具。在这种情况下,new 返回一个指向未初始化对象的指针,允许您稍后使用其属性。

区分 new 和 &

虽然 new(MyStruct ) 和 &MyStruct{} 产生一个指向新结构实例的指针,它们的使用取决于代码的意图。有时, &MyStruct{} 的简洁性是首选,而 new(MyStruct) 明确地展示了在堆上分配内存的意图。

new 的其他注意事项

超越原始类型和结构体,new 不适用于切片和映射。相反,切片应该使用 make([]float, 100)。

new 的实际应用

由于 Go 缺乏内置构造函数,开发人员经常包装 new调用自定义函数来初始化和自定义对象。这种方法简化了初始化过程,允许隐藏私有字段,并简化了结构演化。此外,它通过将对象的创建与其使用分离来提供灵活性,使开发人员能够在不影响现有代码的情况下更改结构的结构。

以上是## Go 中的 `new(MyStruct)` 与 `&MyStruct{}` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn