【发布时间】:2020-01-15 11:11:57
【问题描述】:
我正在尝试将接口指针(*B)转换为其他接口指针(*A)。 A 是 B 的“父级”,所以 B 具有 A 的所有功能。
我在 google 中搜索并找到了“类型断言”,但在这种情况下我无法做到。
我试过了:
f(b.(A))
f(b.(*A))
f((*b).(A))
f(&(*b).(A))
但唯一有效的是:
tmp := (*b).(A)
f(&tmp)
但是它复制了b并且没有优化。
type A interface {
foo()
}
type B interface {
A
bar()
}
func f(a *A) {
(*a).foo()
}
func g(b *B) {
(*b).bar()
f(b) // How to cast this?
}
那么,我该如何解决呢?
【问题讨论】:
标签: pointers go interface casting