程序开发 · 2023年10月25日

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

当前位置: > > > > 如何将接口方法传递给函数?

来源: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.getnamevisitable.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 是多么微不足道,目前还不清楚为什么这会有用,特别是考虑到这不适用于具有不同签名的方法。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何将接口方法传递给函数?》文章吧,也可关注公众号了解相关技术文章。