package main import "fmt" func main() { /* 函數式編程: 支持將函數做爲另外一個函數的參數, 叫回調函數 支持將函數做爲另外一個函數的返回值 一個函數有內層函數,該內層函數中,還會操做外層函數的局部變量,(外層函數中定義,外層函數的參數)而且該外層函數的返回值就是這個內層函數 該內層函數和局部變量,統稱閉包結構, closure 閉包函數不會隨執行結束而自動銷燬 */ res := increment() fmt.Println(res) //fmt.Printf("%T", res) fmt.Println(res()) // 閉包生命週期 res1 := res() fmt.Println(res1) res2 := res() fmt.Println(res2) res3 := res() fmt.Println(res3) //從新開闢內層給變量 res4 := increment() res5 := res4() fmt.Println(res5) } func increment() func() int { // increment 外層函數 i := 0 fun := func() int { i++ return i } return fun //將內層函數返回 ,本質是返回該內存函數的地址 // return func() // 將內層函數的執行結果 返回 }