package main
import (
"fmt"
)
// 匿名函数1
func intSeq() func() int{
var arrInt = [10]int{1,2,3,4,5,6,7,8,9,10}
i := -1
return func() int{
i += 1
return arrInt[i]
}
}
// 带参数匿名函数2
func intSeq2() func(index int) int{
var arrInt = [10]int{0,1,2,3,4,5,6,7,8,9}
i := -1
return func(index int) int{
i += 1
return arrInt[index]
}
}
func testIntSeq(){
nextInt := intSeq()
fmt.Println(nextInt())
fmt.Println(nextInt())
}
func testIntSeq2(){
nextInt := intSeq2()
fmt.Println(nextInt(2))
fmt.Println(nextInt(5))
}
func testQuestion(){
var j int = 5
a := func() (func()){
var i int = 10
return func() {
fmt.Println(i, j)
}
}
b := a()
b()
}
func testQuestion2(){
var j int = 5
a := func() (func()){
var i int = 10
return func() {
fmt.Println(i, j)
}
}()
a()
}
func main(){
// 测试1匿名函数1
testIntSeq();
// 测试2带参数匿名函数
testIntSeq2();
// 测试3
testQuestion();
// 测试4
testQuestion2();
}
go语言学习之闭包函数
猜你喜欢
转载自www.cnblogs.com/xzlq/p/9951612.html
今日推荐
周排行