当前位置: > > > > 如何将接口方法传递给函数?
来源:stackoverflow
2024-04-22 13:36:31
0浏览
收藏
最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何将接口方法传递给函数?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~
问题内容
我的界面如下:
type visitable interface { getName() string getLookupMessage() string }
我想创建一个带有像 apply(visitable []visitable, function ???)
这样的签名的函数,它接受visitable的函数(例如 getname 或 getlookupmessage)作为第二个参数。我在技术上可以做到吗?如果是,怎么做?
解决方案
是的,在这种特定情况下,您可以使用 。这是有效的,因为两个接口方法具有相同的签名,即 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
是多么微不足道,目前还不清楚为什么这会有用,特别是考虑到这不适用于具有不同签名的方法。
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何将接口方法传递给函数?》文章吧,也可关注公众号了解相关技术文章。