Latest web development tutorials

Перейти функции языка закрытия

Перейти функции языка закрытия

функция Go функция Go

Go поддержка языка анонимные функции могут использоваться как замыкания. анонимная функция является "инлайн" заявление или выражение. Превосходство анонимная функция, которая может использовать переменную внутри функции непосредственно, без объявления.

В следующем примере мы создаем функцию getSequence (), возвращает другую функцию. Целью этой функции увеличивается в затворе переменной I, следующим образом:

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

Приведенный выше код выполняется в результате:

1
2
3
1
2

функция Go функция Go