首頁  >  文章  >  後端開發  >  ## Go 中的 `new(MyStruct)` 與 `&MyStruct{}` 有什麼不同?

## Go 中的 `new(MyStruct)` 與 `&MyStruct{}` 有什麼不同?

Linda Hamilton
Linda Hamilton原創
2024-10-25 06:54:29685瀏覽

## 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