在 Go 中從嵌入式方法存取父欄位:可行嗎?
在 Go 中,嵌入式方法允許將類型嵌入到其他類型中,從而使得程式碼重用並提供更簡單的介面。然而,一個常見的問題是:嵌入方法可以存取父類型的欄位嗎?
背景:
Go 的嵌入機制利用組合來擴展類型的功能,而無需遺產。當嵌入類型時,其欄位和方法將成為嵌入類型的一部分。
目標:
此問題的目的涉及建立 Active Record 樣式 ORM對於Go,方法嵌入在用戶結構中以抽像出數據存儲
示例:
type Foo struct { *Bar Name string } func (s *Foo) Method() { // How to access "Name" field from this embedded method? }
問題:
有沒有辦法製作頂級欄位(父字段)可透過嵌入方法(如s.Name 或call)存取s.Method()?
答案:
Go 本身不支援從嵌入方法存取父欄位。嵌入方法的接收者嚴格綁定到嵌入類型,在本例中為 *Bar。因此,直接存取父字段是不可能的。
替代方法:
以上是Go中的嵌入方法可以存取父字段嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!