3 回答

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
如果沒有類型斷言,您將無(wú)法訪問這樣的字段。您只能在接口上調(diào)用方法,它對(duì)其實(shí)現(xiàn)細(xì)節(jié)一無(wú)所知。如果確實(shí)需要訪問這些字段,請(qǐng)使用類型斷言:
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()
游樂場(chǎng):https : //play.golang.org/p/Ije8hfNcWS。

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

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
您的函數(shù) getDataPoint 返回一個(gè)接口,而不是一個(gè)結(jié)構(gòu)。因此,如果要將其返回值用作結(jié)構(gòu)體,則必須先進(jìn)行類型斷言。這是一個(gè)工作代碼:https : //play.golang.org/p/5lx4BLhQBg
- 3 回答
- 0 關(guān)注
- 178 瀏覽
添加回答
舉報(bào)