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

Go 如何将接口方法传递给函数?,go,interface,functional-programming,Go,Interface,Functional Programming,我有一个界面如下: 类型可访问接口{ getName()字符串 getLookupMessage()字符串 } 我想创建一个签名为apply(visitable[]visitable,function???)的函数,它接受visitable的函数(如getName或getLookupMessage)作为第二个参数。技术上我能做到吗?如果是,怎么做?是的,在这种特定情况下,您可以使用。这是因为两个接口方法具有相同的签名,即visitable.getName和visitable.getLookup

我有一个界面如下:

类型可访问接口{
getName()字符串
getLookupMessage()字符串
}

我想创建一个签名为
apply(visitable[]visitable,function???)
的函数,它接受visitable的函数(如getName或getLookupMessage)作为第二个参数。技术上我能做到吗?如果是,怎么做?

是的,在这种特定情况下,您可以使用。这是因为两个接口方法具有相同的签名,即
visitable.getName
visitable.getLookupMessage
的类型都是
func(visitable)字符串

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
是多么的微不足道,我们不清楚为什么它会有用,特别是考虑到它不适用于具有不同签名的方法。

您只需将函数传递给
apply
。您真的需要同时传递
访问表
?如果您传递了一个对象实现的方法
visitable
,该函数将在该对象的实例上工作。这看起来非常像一个X/Y问题,您能否给出一些详细信息,说明您正在尝试做什么,以及您是如何解决这个问题的?