go 匿名函式和閉包

2022-05-19 14:32:18 字數 1714 閱讀 5628

1. 函式也是一種型別,因此可以定義作為乙個函式型別的變數

package main

import

"fmt"//

函式作為引數

func add(a, b

int) int

func testfunc(a, b

int, fun func(int, int) int) int

func main()

2. 匿名函式即沒有名字的函式

注意defer 和匿名函式的使用 

package main

import

"fmt

"func add(a, b

int) int

//函式名也可以賦值給變數

func test1()

/*ff的型別是func(int, int) int

sum is 9

*///

匿名函式

func test2()

fmt.printf(

"f1的型別是%t\n

", f1)

sum := f1(4, 5

) fmt.printf(

"sum is %d \n

", sum)}/*

f1的型別是func(int, int) int

sum is 9

*///

defer

func test3() int

/*i is 100

defer i is 10

return i is 100

*///

defer 和匿名函式

func test4 () int

() i= 100

fmt.printf(

"i is %d\n

", i)

returni}

/*i is 100

defer i is 100

return i is 100

*/-.

func main()

乙個函式和與其相關的引用環境組合組成的實體

個人認為go中的閉包和python中的閉包概念一樣 都是 乙個外層函式 巢狀 乙個內層函式  內層函式包含對外層函式變數的引用 外層 函式返回值為內層函式的函式名

package main

import (

"fmt""

strings""

time")

func test1() func(

int) int

}func test2(

base

int) func(int) int

}func test3(suffix

string) func(name string) string

return

name

}}func test4(a

int) (func(int) int, func(int) int

) sub := func(c int) int

return

add, sub

}func test5()()

}time.sleep(time.second)

}func test6()(i)

}time.sleep(time.second)

}func main()

go閉包和匿名函式

閉包的概念 是可以包含自由 未繫結到特定物件 變數的 塊,這些變數不在這個 塊內或者任何全域性上下文中定義,而是在定義 塊的環境中定義。要執行的 塊 由於自由變數包含在 塊中,所以這些自由變數以及它們引用的物件沒有被釋放 為自由變數提供繫結的計算環境 作用域 閉包的價值 閉包的價值在於可以作為函式物...

Go 閉包和匿名函式講解

函式及多型 1 package main23 import fmt 4 5 給匿名函式型別取別名 6 注意不要在後面加 加了是表面匿名函式定義 7type functype func x int,y int int 89 例如實現加法 10func add x int,y int int 1415 ...

匿名函式和閉包

匿名函式 匿名函式和普通函式 function box alert box 閉包概念 閉包是指有權訪問另乙個函式作用域中的變數的函式,建立閉包的常見的方式,就是在乙個函式內部建立另乙個函式,通過另乙個函式訪問這個函式的區域性變數。閉包作用 使用閉包有乙個優點,也是其缺點。可以把區域性變數駐留在記憶體...