标签:迭代 匿名函数 传参 print ++ 闭包函数 i++ next 方法
1.带参数闭包函数
func main() {
//先调用闭包外面的方法传给变量
add_func := add(1, 2)
//再调用里面的方法,因为有了i++ 同一个内存地址 在一次编译中i的值会迭代加1
fmt.Println(add_func(1, 1)) //1 3 2
fmt.Println(add_func(0, 0)) //2 3 0
fmt.Println(add_func(2, 2)) //3 3 4
}
// 闭包使用方法,定义add的传参 和函数差不多,再定义fun 可理解匿名函数
func add(x1, x2 int) func(x3 int, x4 int) (int, int, int) {
i := 0
// 这里需要对匿名函数return 理解调用add回调下func,再传参
return func(x3 int, x4 int) (int, int, int) {
i++
//最后return出
return i, x1 + x2, x3 + x4
}
}
2.不带参数闭包
func main() {
/* add 为一个函数,函数 i 为 0 */
nextNumber := add()
/* 调用 add 函数,i 变量自增 1 并返回 */
fmt.Println(nextNumber())
fmt.Println(nextNumber())
fmt.Println(nextNumber())
}
func add() func() int {
i := 0
return func() int {
i++
return i
}
}
标签:迭代 匿名函数 传参 print ++ 闭包函数 i++ next 方法
原文地址:https://www.cnblogs.com/Jack-cx/p/10182615.html