嵌入結構:何時首選指針
將一個結構嵌入另一個結構時,有兩種選擇:使用指針或嵌入值。為了指導這項決策,了解規範並考慮每種方法的優點非常重要。
指標與嵌入值
根據 Go 規範,匿名欄位(也稱為嵌入欄位)可以宣告為型別名稱或指向非介面類型名稱的指標。這表示您可以選擇對下列範例中的 Logger 欄位使用類型 log.Logger 或指標 *log.Logger:
type Job struct {
Command string
*log.Logger
}
指針的好處
Eric Urban 的文章《Embedding in Go》強調了嵌入指針的優點,即“按指針嵌入” ”。其中包括:
需要注意的是,您不能使用指向指標的指標或作為匿名欄位指向介面的指標。這種限制源於這些類型沒有方法,這是嵌入的關鍵方面。方法從嵌入類型提升為嵌入類型,允許您直接存取它們。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3