go的閉包02
阿新 • • 發佈:2022-03-06
點選檢視程式碼
package main import "fmt" func testFunc3(){ var i int =0 fmt.Printf("testFunc3 i=%d\n",i) defer fmt.Printf("defer i=%d\n",i) i=100 fmt.Printf("testFunc3 02 i=%d\n",i) return } // 在defer中呼叫了匿名函式,在函式執行的時候,i是等於100了 func testFunc4(){ var i int =0 defer func(){ fmt.Printf("defer i =%d\n",i) }() i = 100 fmt.Printf("i=%d\n",i) return } func testC(a,b int)int{ return a*b } func testFunc5(){ sum := calc(100,300,add) sub := calc(100,300,sub) su := calc(4,5, testC) // testC函式的引數型別不一樣,不能作為這個函式傳進去 fmt.Printf("sum=%d sub=%d su=%d \n",sum,sub,su) } func add(a,b int)int{ return a+b } func sub(a,b int)int{ return a-b } // 此處的op是一個函式型別作為引數 func calc(a,b int,op func(int,int) int) int{ return op(a,b) } func main(){ //testFunc3() //testFunc4() testFunc5() }