16.7 使用值類型時誤用指針
將一個值類型作爲一個參數傳遞給函數或者作爲一個方法的接收者,似乎是對內存的濫用,因爲值類型一直是傳遞拷貝。但是另一方面,值類型的內存是在棧上分配,內存分配快速且開銷不大。如果你傳遞一個指針,而不是一個值類型,go編譯器大多數情況下會認爲需要創建一個對象,並將對象移動到堆上,所以會導致額外的內存分配:因此當使用指針代替值類型作爲參數傳遞時,我們沒有任何收穫。
鏈接
- 目錄
- 上一節:使用指針指向接口類型
- 下一節:誤用協程和通道
將一個值類型作爲一個參數傳遞給函數或者作爲一個方法的接收者,似乎是對內存的濫用,因爲值類型一直是傳遞拷貝。但是另一方面,值類型的內存是在棧上分配,內存分配快速且開銷不大。如果你傳遞一個指針,而不是一個值類型,go編譯器大多數情況下會認爲需要創建一個對象,並將對象移動到堆上,所以會導致額外的內存分配:因此當使用指針代替值類型作爲參數傳遞時,我們沒有任何收穫。