我有一个界面如下: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,目前还不清楚为什么这会有用,特别是考虑到这不适用于具有不同签名的方法。
- 1 回答
- 0 关注
- 167 浏览
添加回答
举报
0/150
提交
取消