1. 程式人生 > >go語言學習之閉包函式

go語言學習之閉包函式

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(); }