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