Latest web development tutorials

Vai chiusure di funzione lingua

Vai chiusure di funzione lingua

funzione Go funzione Go

Va supporto lingua funzioni anonime possono essere utilizzate come chiusure. funzione anonima è una dichiarazione "in linea" o espressione. Superiorità funzione anonima che può utilizzare la variabile all'interno della funzione direttamente, senza dover dichiarare.

Il seguente esempio, creiamo una funzione getSequence (), restituisce un'altra funzione. Lo scopo di questa funzione è crescente in una variabile di chiusura i, come segue:

package main

import "fmt"

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

func main(){
   /* nextNumber 为一个函数,函数 i 为 0 */
   nextNumber := getSequence()  

   /* 调用 nextNumber 函数,i 变量自增 1 并返回 */
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   
   /* 创建新的函数 nextNumber1,并查看结果 */
   nextNumber1 := getSequence()  
   fmt.Println(nextNumber1())
   fmt.Println(nextNumber1())
}

Il codice precedente viene eseguito come risultato di:

1
2
3
1
2

funzione Go funzione Go