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 关注
- 151 浏览
添加回答
举报