(一)函数值
函数也是值,他们也是可以完全像其他变量一样通过函数的传参,函数值可以被使用为函数参数和返回值
package main
import "fmt"
func compute(fn func(int,int)int) int{
return fn(3,4)
}
func main(){
demo := func(x,y int)int{
return x*2+y
}
fmt.Println("单单使用函数demo进行计算:",demo(1,1))
fmt.Println("直接将demo传给computer函数进行计算:",compute(demo))
}
(二)函数闭合
Go函数可以闭合,一个闭合是一个函数值引用自外部变量,函数可以访问和声明到引用的变量,函数对于变量来说是一个范围
package main
import "fmt"
func change() func(int)int{
i:=0
return func()int{
i>>1
return i
}
}
func main(){
fmt.Println("change函数值为:",change())
}