码迷,mamicode.com
首页 > 其他好文 > 详细

go闭包使用

时间:2018-12-27 03:41:23      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:迭代   匿名函数   传参   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
	}
}

  

go闭包使用

标签:迭代   匿名函数   传参   print   ++   闭包函数   i++   next   方法   

原文地址:https://www.cnblogs.com/Jack-cx/p/10182615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!