跟Js的閉包原理差不多,典型的用法,計數器。可以對比看看
主要注意寫法!
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()) /*1*/
fmt.Println(nextNumber()) /*2*/
fmt.Println(nextNumber()) /*3*/
/* 創建新的函數 nextNumber1,並查看結果 */
nextNumber1 := getSequence()
fmt.Println(nextNumber1()) /*1*/
fmt.Println(nextNumber1()) /*2*/
}