Go的闭包

package main

func A(i int) (func() int) {
	return func() int {
		return i
	}
}

func main() {
	var a,b func()int
	var c [3]func()int
	
	i:=0
	a=func() int {
		return i
	}
	b=func() int {
		return i
	}
	println(a(),b())
	i=1
	println(a(),b())
	
	a=A(2)
	b=A(3)
	println(a(),b())
	
	for i:=4;i<7;i++{
		c[i-4]=func() int {
			return i
		}
	}
	println(c[0](),c[1](),c[2]())
}
// 0 0
// 1 1
// 2 3
// 7 7 7

闭包内引用的变量不是拷贝的值,而是直接使用该变量(可以理解为引用),局部变量也是一样的 函数参量每次调用都是不同的(这也是递归的必然要求),因此可以安全的利用函数参量产生不同的闭包 函数的(多)返回值可以直接传递给其他函数用于调用

相关文章

什么是Go的接口? 接口可以说是一种类型,可以粗略的理解为他...
1、Golang指针 在介绍Golang指针隐式间接引用前,先简单说下...
1、概述 1.1&#160;Protocol buffers定义 Protocol buffe...
判断文件是否存在,需要用到"os"包中的两个函数: os.Stat(...
1、编译环境 OS :Loongnix-Server Linux release 8.3 CPU指...
1、概述 Golang是一种强类型语言,虽然在代码中经常看到i:=1...