Go语言基础之高阶函数
Go语言基础之高阶函数
高阶函数分为函数作为参数和函数作为返回值两部分。
一、函数作为参数
函数可以作为参数:
func add(x, y int) int {
return x + y
}
func calc(x, y int, op func(int, int) int) int {
return op(x, y)
}
func main() {
ret2 := calc(10, 20, add)
fmt.Println(ret2) //30
}
二、函数作为返回值
函数也可以作为返回值:
func do(s string) (func(int, int) int, error) {
switch s {
case "+":
return add, nil
case "-":
return sub, nil
default:
err := errors.New("无法识别的操作符")
return nil, err
}
}
三、函数放入切片
func main{
type typeFunc func(int, int) int
var name []typeFunc = []typeFunc{add1}
for _, key := range name {
fmt.Println(key(2, 4)) // 6
}
}
func add1(x, y int) int {
return x + y
}
四、总结
- 函数可以当作函数参数传参
- 函数可以作为返回值
在当下的阶段,必将由程序员来主导,甚至比以往更甚。