登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-22 13:36:31 383浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何将接口方法传递给函数?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我的界面如下:

type visitable interface {
    getName() string
    getLookupMessage() string
}

我想创建一个带有像 apply(visitable []visitable, function ???) 这样的签名的函数,它接受visitable的函数(例如 getname 或 getlookupmessage)作为第二个参数。我在技术上可以做到吗?如果是,怎么做?


解决方案


是的,在这种特定情况下,您可以使用 method expressions。这是有效的,因为两个接口方法具有相同的签名,即 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 是多么微不足道,目前还不清楚为什么这会有用,特别是考虑到这不适用于具有不同签名的方法。

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

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>