go的闭包01

点击查看代码
package main

import "fmt"

func add(base int) func(int) int {
	return func(i int) int {
		fmt.Printf(" 000 base=%d,i=%d\n",base,i)
		base += i
		fmt.Printf(" 001 base=%d,i=%d\n",base,i)
		return base
	}
}

func main() {
	tmp := add(10)  // 只要tem变量存货,add函数中的x就一直存活,所有的变量都会随着x的变化而变化
	fmt.Println(tmp(1), tmp(2))
	tmp2 := add(100)
	fmt.Println(tmp2(11), tmp2(22))
}


输出:

点击查看代码
000 base=10,i=1
 001 base=11,i=1
 000 base=11,i=2
 001 base=13,i=2
11 13
 000 base=100,i=11
 001 base=111,i=11
 000 base=111,i=22
 001 base=133,i=22
111 133
posted @ 2022-03-06 18:21  ty1539  阅读(14)  评论(0编辑  收藏  举报