Avatar ·

在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中是如何工作的,以及是否有更好的方法。