golang 闭包
go语言中函数也是一种数据类型,也可以像变量一样,操作。下面代码给变量赋值了一个函数
var test = func(a int, b int) (int, float64) { return 0, 0 } func main() { test(1, 2) }
函数也可以当做参数,或者返回值来使用。
func test(f func(i int) int) { f(1) } func testInner(i int) int { fmt.Println(i) return i } func main() { test(testInner) return }
当一个函数的返回值是一个函数的时候,其实叫做闭包。
type testInner func(i int) int func test() testInner { return func(i int) int { return 0 } } func main() { s := test() ret := s(1) fmt.Println(ret) return }
Welcome to visit