golang func args 传代码块
时间: 2023-11-25 12:07:16 浏览: 84
在 Go 语言中,函数参数是有类型的,无法直接传递代码块(匿名函数)作为参数。不过,你可以通过定义函数类型和传递函数变量来实现类似的效果。下面是一个示例:
```go
package main
import "fmt"
type Operation func(int, int) int
func calculate(a, b int, op Operation) int {
return op(a, b)
}
func main() {
add := func(a, b int) int {
return a + b
}
subtract := func(a, b int) int {
return a - b
}
result1 := calculate(5, 3, add)
result2 := calculate(10, 2, subtract)
fmt.Println(result1) // 输出 8
fmt.Println(result2) // 输出 8
}
```
在上面的示例中,我们定义了一个 `Operation` 类型,它是一个函数类型,接收两个整数参数并返回一个整数结果。然后,我们定义了两个匿名函数 `add` 和 `subtract`,它们符合 `Operation` 类型的定义。接下来,我们使用 `calculate` 函数来计算两个数的结果,通过传递不同的函数变量实现了不同的操作。最后,我们打印输出了结果。
阅读全文