在Go中能否将函数作为参数传递?
大家好!我刚开始学习Go,有一个问题。我习惯使用可以将函数作为参数传递给其他函数的语言(例如JavaScript或Python)。但在Go中,我不确定这是否可行。
我尝试编写一个简单的计算器,它接受操作(加法、减法)作为参数,但没有成功。以下是我尝试的代码:
```go
package main
import "fmt"
func add(a, b int) int {
return a + b
}
func subtract(a, b int) int {
return a - b
}
func calculate(a, b int, op func(int, int) int) int {
return op(a, b)
}
func main() {
result := calculate(10, 5, add)
fmt.Println(result)
}
```
代码可以编译并运行,但我不确定这是否是正确的语法。为什么需要写 `func(int, int) int`?这是某种魔法吗?是否可以传递具有不同签名的函数?例如,一个接受三个参数的函数?
请告诉我这在Go中是如何工作的,以及是否有更好的方法。