new()和「&」運算子的差異
Go中new()函數與「&」記憶體位址運算子都用於分配記憶體。然而,它們的用法之間存在一些細微的差異。
功能比較
new()和&運算子都傳回指向新分配的記憶體位址的指標。但是,它們的語法有所不同:
類型分析
如提供的程式碼範例所示,反射分析表明&Vector{} 和new(Vector) 都會傳回相同類型的指針,因為兩者都是指向Vector 結構體實例的指標。
歷史混亂
Go 郵件列表之前討論過同時使用 new() 和 & 進行內存分配的問題,因為它可能會導致混亂。
特殊情況
值得注意new() 是取得指向未命名基本類型(例如整數)的指標的唯一方法。這可以在下面的範例中看到:
p := new(int) // valid p := &int{0} // invalid
首選項與用法
最終,使用new() 和& 進行記憶體分配之間的選擇很大程度上取決於個人喜好。兩種方法具有相同的功能並產生相同的結果。然而,重要的是要意識到這兩個運算符之間的細微差別,並根據具體要求適當地使用它們。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3