Latest web development tutorials

ไปปิดฟังก์ชั่นภาษา

ไปปิดฟังก์ชั่นภาษา

ฟังก์ชั่นไป ฟังก์ชั่นไป

ไปสนับสนุนภาษาฟังก์ชั่นที่ไม่ระบุชื่อสามารถใช้เป็นฝาปิด ฟังก์ชั่นที่ไม่ระบุชื่อเป็น "อินไลน์" คำสั่งหรือการแสดงออก เหนือกว่าฟังก์ชั่นที่ไม่ระบุชื่อที่สามารถใช้ตัวแปรภายในฟังก์ชั่นได้โดยตรงโดยไม่ต้องประกาศ

ตัวอย่างต่อไปนี้เราจะสร้าง getSequence ฟังก์ชั่น () กลับมาทำงานอีก วัตถุประสงค์ของฟังก์ชั่นนี้จะเพิ่มขึ้นในตัวแปรปิดผมดังนี้

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

ฟังก์ชั่นไป ฟังก์ชั่นไป