如何在 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")
这当然会打印相同的内容。
我有以下代码
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")
这当然会打印相同的内容。