2022年2月13日 星期日

Go lang 學習筆記 - 15 Closures

```

package main


import "fmt"


func intSeq() func() int {

        i := 0

        return func() int {

                i++

                return i

        }

}


func main() {

        nextInt := intSeq()


        fmt.Println(nextInt())

        fmt.Println(nextInt())

        fmt.Println(nextInt())


        nextInt2 := intSeq()

        fmt.Println(nextInt2())

}

```

Closure 的概念我也是第一次學到  查了一些資料

我的理解是  把變數包進 anonymous function 裡面使用的話 

The anonymous function close over the variable

等於會延長該變數的生命週期(lifetime)  直到 anonymous function 生命週期結束


然後特殊的是每個 anonymous function 裡面包的變數是獨立的

例如上面的 nextInt 跟 nextInt2 兩個裡面的 i 是不同的


執行結果:

1

2

3

1


沒有留言:

張貼留言

Go lang 學習筆記 - 17 Pointers

``` package main import "fmt" func zeroval(n int) {         n = 0 } func zeroptr(n *int) {         *n = 0 } func main() {         ...