Avatar ·

在 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) } ``` 这段代码可以运行,但我