Go語言函式閉包

2019-10-16 23:16:52

Go程式設計語言支援可以充當函式閉包的匿名函式。 當想要定義一個函式內聯而不傳遞任何名稱時,使用匿名函式。 在這個範例中,我們建立了一個函式getSequence(),它將返回另一個函式。該函式的目的是關閉上函式的變數i以形成閉包。 以下是範例:

package main

import "fmt"

func getSequence() func() int {
   i:=0
   return func() int {
      i+=1
      return i  
   }
}

func main(){
   /* nextNumber is now a function with i as 0 */
   nextNumber := getSequence()  

   /* invoke nextNumber to increase i by 1 and return the same */
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())

   /* create a new sequence and see the result, i is 0 again*/
   nextNumber1 := getSequence()  
   fmt.Println(nextNumber1())
   fmt.Println(nextNumber1())
}

當上述程式碼編譯和執行時,它產生以下結果:

1
2
3
1
2