3 回答

TA貢獻2003條經驗 獲得超2個贊
如果沒有類型斷言,您將無法訪問這樣的字段。您只能在接口上調用方法,它對其實現細節一無所知。如果確實需要訪問這些字段,請使用類型斷言:
dpc := getDataPoint("Conversion")
dpc.(*Conversion).Meta = meta
dpc.(*Conversion).Value = 100
dpc.Create()
dpi := getDataPoint("Impression")
dpi.(*Impression).Meta = meta
dpi.(*Impression).Count = 42
dpi.Create()
游樂場:https : //play.golang.org/p/Ije8hfNcWS。

TA貢獻1891條經驗 獲得超3個贊
您的問題是結果getDataPoint
是 a DataPoint
,它只有一種方法可用:Create
。然后,您嘗試將其用作特定的結構類型,順便提供所有元數據字段。
你可以讓你的 DataPoint 接口提供一個MetaData
函數或類似的東西,或者在字段上提供單獨的 getter。如果MetaData
類型實現了這些方法,當它們作為接口本身呈現時,它們將可以從任一特定結構中獲得。

TA貢獻1786條經驗 獲得超11個贊
您的函數 getDataPoint 返回一個接口,而不是一個結構。因此,如果要將其返回值用作結構體,則必須先進行類型斷言。這是一個工作代碼:https : //play.golang.org/p/5lx4BLhQBg
- 3 回答
- 0 關注
- 195 瀏覽
添加回答
舉報