new() 和"&" 運算子的差異
Go 中new() 函數與"&" 記憶體位址運算子都用於分配記憶體。但是,它們的用法之間存在一些細微的差異。
功能比較
new() 和 & 運算子都會傳回指向新指派的記憶體位址的指標。但是,它們的語法不同:
類型分析
如提供的程式碼範例所示,反射分析顯示&Vector{} 和new(Vector) 傳回相同類型的指針,因為兩者都是指向Vector 結構體實例的指標。
歷史混亂
Go 郵件列表之前討論過有關同時使用 new() 和 & 進行內存分配的問題,因為它可能會導致混亂。
特殊情況
值得注意new() 是取得指向未命名基本類型(例如整數)的指標的唯一方法。這可以在以下範例中看到:
p := new(int) // valid p := &int{0} // invalid
偏好和使用
最終,使用new() 和& 進行記憶體分配之間的選擇很大程度上取決於個人喜好問題。兩種方法具有相同的功能並產生相同的結果。然而,重要的是要意識到這兩個運算符之間的細微差別,並根據具體要求適當地使用它們。
以上是Go 中的「new()」函數和「&」記憶體位址運算子有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!