有没有办法可以从任意接口列表中确定具体类型实现哪些接口?我知道一个类型开关,但我想知道所有满意的接口。例如,给定:type Mover interface { Move() }type Talker interface { Talk() }type Flyer interface { Fly() }type Person struct{}func (a *Person) Move() {fmt.Println("Moving...") }func (a *Person) Talk() {fmt.Println("Talking...") }我可以手动测试每个接口,如下所示:func testInterfaces(entity interface{}) { _, ok := entity.(Mover) if ok { fmt.Println("mover") } _, ok := entity.(Talker) if ok { fmt.Println("talker") } _, ok := entity.(Flyer) if ok { fmt.Println("flyer") }}对于 Person 值,将打印“mover”和“talker”。但是,我宁愿有这样的功能(非工作):func testInterfaces2(entity interface{}, interfaceList type??) { for _, inter := range interfaceList { val, ok := entity.(inter) if ok { // do something with val } }}有没有办法可以实现类似这个伪函数的东西,也许是通过反射包或其他方式?
2 回答
- 2 回答
- 0 关注
- 181 浏览
添加回答
举报
0/150
提交
取消