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

如何将接口方法传递给函数?

如何将接口方法传递给函数?

Go
慕妹3146593 2022-05-17 16:59:27
我有一个界面如下:type visitable interface {    getName() string    getLookupMessage() string}我想制作一个带有类似签名的函数,apply(visitable []visitable, function ???)它接受可访问的函数(例如 getName 或 getLookupMessage)作为第二个参数。我可以在技术上做到这一点吗?如果是,如何?
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

是的,在这种特定情况下,您可以使用方法表达式。这是有效的,因为两个接口方法具有相同的签名,即两者的类型visitable.getName和visitable.getLookupMessage是func(visitable) string:


package main


type visitable interface {

    getName() string

    getLookupMessage() string

}


func apply(vs []visitable, m func(visitable) string) {

    for _, v := range vs {

        m(v)

    }

}


func main() {

    apply(nil, visitable.getName)

    apply(nil, visitable.getLookupMessage)

}

然而,考虑到它是多么微不足道apply,目前还不清楚为什么这会有用,特别是考虑到这不适用于具有不同签名的方法。


查看完整回答
反对 回复 2022-05-17
  • 1 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号