我有一个函数,它返回某些接口的指针的一部分。我想稍后在代码中将类型更改为实现类型,但无济于事,我仍然收到无效的类型断言。
示例
func Test(c Parsable)([]*Parsable, error) {
// generate slice by factory method on Parsable inteface and return slice
}
var implParsable ImplParsable
results, err := Test(implParsable)
data := results[0].(ImplParsable) // I tried this in many variations but nothing works
答案 0 :(得分:3)
resultSets[0]
是指向接口的指针,因此您需要取消引用该指针以获取接口值,由于切片值是可寻址的,因此可以内联。
data := (*resultSets[0]).(ImplParsable)