函数也是值。它们可以像其它值一样传递。函数值可以用作函数的参数或返回值。
package main import ( "fmt" ) func main() { //声明一个函数赋值给变量fn fn := func(i,j int) int { return i*j } fmt.Println(test(fn)) //12 } //函数的入参是一个函数 func test(fn func(int,int) int) int { return fn(3,4) }
package main import ( "fmt" ) func main() { fn := test() fn2 := test2() for i:=0;i<10;i++{ fmt.Println(fn(i),fn2(i)) } } func test() func(int)int { return func(i int) int { return i } } func test2() func(int) int { sum := 0 return func(i int) int { sum += i return sum } }
输出
0 0 1 1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45
此情况返回函数值,它引用了其函数体之外的变量,该函数可以访问并赋予其引用的变量的值。
转载请注明:Terry's blog » golang 函数