go語言學習之閉包函式
阿新 • • 發佈:2018-11-13
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();
}