zoukankan      html  css  js  c++  java
  • go闭包使用

    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
    	}
    }
    

      

  • 相关阅读:
    描述网络的优点与缺点
    外键之表格三种关系
    Mysql完整性约束
    Mysql数据类型
    mysql的基本语句
    Mysql的基本安装
    type与object的关系
    反射
    面向对象内置方法(进阶)
    Python 的五种io模型理解
  • 原文地址:https://www.cnblogs.com/Jack-cx/p/10182615.html
Copyright © 2011-2022 走看看