为了账号安全,请及时绑定邮箱和手机立即绑定

从任意接口列表中满足哪些接口?

从任意接口列表中满足哪些接口?

Go
函数式编程 2021-07-09 16:05:57
有没有办法可以从任意接口列表中确定具体类型实现哪些接口?我知道一个类型开关,但我想知道所有满意的接口。例如,给定: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
提交
取消
意见反馈 帮助中心 APP下载
官方微信