您的位置 首页 golang

高阶函数golang

高阶函数(Higher Order Functions),就是操纵函数的函数,它可能输入参数是函数,或者返回是函数。

例子1,返回一个函数

 package main

import "fmt"

func sum(x, y int) int {
return x + y
}
func partialSum(x int) func(int) int {
return func(y int) int {
return sum(x, y)
}
}
func main() {
partial := partialSum(3)
fmt.Println(partial(7))
}  

partialSum 返回了一个函数,接受int值,返回一个int值。

例子2,下面这个例子,是一个三层函数的返回。

 package main

import "fmt"

func squareSum(x int) func(int) func(int) int {
return func(y int) func(int) int {
return func(z int) int {
return x*x + y*y + z*z
}
}
}
func main() {
// 5*5 + 6*6 + 7*7
fmt.Println(squareSum(5)(6)(7))
}  

定义函数类型

Golang支持定义自己的函数类型,使用关键字 type

所以上面的代码,经过改写后,就成了下面的样子。 注意,使用函数类型时,参数和返回值要统一替换, 不能只替换一部分。

 
type First func(int) int

type Second func(int) First

func squareSum(x int) Second {
return func(y int) First {
return func(z int) int {
return x*x + y*y + z*z
}
}
}


func main() {
// 5*5 + 6*6 + 7*7
fmt.Println(squareSum(5)(6)(7))
}  

文章来源:智云一二三科技

文章标题:高阶函数golang

文章地址:https://www.zhihuclub.com/101201.shtml

关于作者: 智云科技

热门文章

网站地图