在 Go 中能否将函数作为参数传递?
大家好!我刚开始学习 Go,有一个关于函数使用的问题。在其他语言中,比如 Python 或 JavaScript,我习惯将函数作为参数传递给其他函数。这对于创建 callback、事件处理器或实现排序策略非常方便。
在 Go 中,我发现函数是一个独立的实体。我尝试编写一个函数,它接受另一个函数并将其应用于数组元素,但编译器对我的代码报错。
以下是我尝试做的:
```go
package main
import "fmt"
func applyToSlice(s []int, fn func(int) int) []int {
result := make([]int, len(s))
for i, v := range s {
result[i] = fn(v)
}
return result
}
func main() {
nums := []int{1, 2, 3, 4}
// 想传递一个将数字翻倍的函数
doubled := applyToSlice(nums, func(x int) int {
return x * 2
})
fmt.Println(doubled)
}
```
这段代码可以运行,但我