如何在 Go 的接口中使用函数类型

How to use function types in interfaces in Go

我有以下代码

type SomeInterface interface {
    SomeFunc(int, string)
}

type IntStringFunc func(int, string)

func (f IntStringFunc) SomeFunc(i int, s string) {
    f(i, s)
}

在函数类型 IntStringFunc 上调用方法 SomeFunc 的语法是什么?

方法 calling 语法不依赖于接收者类型,它总是相同的:value.methodName(params).

例如:

var f IntStringFunc = func(i int, s string) {
    fmt.Printf("f(%d, %s)\n", i, s)
}

f.SomeFunc(1, "one")

这将输出(在 Go Playground 上尝试):

f(1, one)

既然f的类型是函数类型,当然你也可以这样调用:

f(1, "one")

这当然会打印相同的内容。