首頁 >後端開發 >Golang >當嵌入 Go 時:指標還是值?

當嵌入 Go 時:指標還是值?

Patricia Arquette
Patricia Arquette原創
2024-11-25 00:45:11260瀏覽

When Embedding in Go: Pointer or Value?

Go 嵌入哪個比較可取:指標還是值?

在 Go 中,嵌入性允許您在另一種類型中重複使用一種類型的欄位和方法。但是,您可以選擇按指標或按值嵌入。兩者之間的選擇會影響程式碼的行為和效率。

透過指標嵌入

當您透過指標嵌入類型時,嵌入類型的欄位將透過指標存取。此方法在以下情況下非常有用:

  • 渲染器按值傳遞,且位圖上所需的方法在 *Bitmap 上定義。

以值嵌入

當您按值嵌入類型時,嵌入類型的欄位將複製到嵌入類型中。在以下情況下首選此方法:

  • Bitmap 有一個傳回指標的建構函數,且 Bitmap 的零值不可用。
  • 所有 Bitmap 方法都是值方法。

所提供範例的注意事項

在範例中提供:

type Bitmap struct{
    data [4][4]bool
}

type Renderer struct{
    *Bitmap
    on uint8
    off uint8
}

在這種情況下通常更建議按值嵌入,因為:

  1. 小型類型: Bitmap類型是緊湊的,因此按值嵌入導致最小的記憶體開銷。
  2. 存取位置: 存取渲染器中的位圖欄位不需要取消引用指標。
  3. 減少記憶體分配:以值嵌入避免建立額外的指針對象。

以上是當嵌入 Go 時:指標還是值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn