英文:
How to use function types in interfaces in Go
问题
在函数类型IntStringFunc上调用方法SomeFunc的语法是:
var f IntStringFunc
f.SomeFunc(i, s)
其中,f
是一个类型为IntStringFunc的变量,i
和s
是SomeFunc方法的参数。通过变量f
调用SomeFunc方法,并传入参数i
和s
。
英文:
I have the following code
type SomeInterface interface {
SomeFunc(int, string)
}
type IntStringFunc func(int, string)
func (f IntStringFunc) SomeFunc(i int, s string) {
f(i, s)
}
What is the syntax for invoking the method SomeFunc on the function type IntStringFunc?
答案1
得分: 1
方法调用语法不依赖于接收器类型,它始终是相同的: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")
这当然会打印相同的结果。
英文:
The method calling syntax does not depend on the receiver type, it's always the same: value.methodName(params)
.
For example:
var f IntStringFunc = func(i int, s string) {
fmt.Printf("f(%d, %s)\n", i, s)
}
f.SomeFunc(1, "one")
This will output (try it on the Go Playground):
f(1, one)
Since type of f
is a function type, you can of course call it too like this:
f(1, "one")
Which of course will print the same.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论