**函式及多型
1view codepackage main23
import
"fmt"4
5 //給匿名函式型別取別名
6 //注意不要在後面加{},加了是表面匿名函式定義
7type functype func(x int, y int) int
89 //例如實現加法
10func add(x int, y int) int
1415 //例如實現減法
16func sub(x int, y int) int
2021 //例如實現乘法
22func mul(x int, y int) int
2627 //例如實現除法
28func div(x int, y int) int
3233 //**函式,函式有乙個引數是函式型別, 這個函式就是**函式
34 //多型,多種形態,呼叫同乙個介面,不同的表現,可以實現不同表現,例如:加減乘除
35 //先有想法,後面再實現功能
36func callback(a, b int, ftest functype) int
4243
func main()
閉包:
乙個函式捕獲了和它在同一作用域的其它常量和變數。
匿名函式和閉包
1view codepackage main23
import
"fmt"4
5func main()
14f()
15 //給乙個函式型別起別名
16 type functype func() //函式沒有引數,沒有返回值
17 //宣告變數
18 // f1 :=f
19var f1 functype
20 f1 =f
21f1()
2223 //需求:定義匿名函式,同時呼叫
24func() () //後面的()代表呼叫此匿名函式
2728 //需求:帶引數的匿名函式
29 f2 :=func(i, j int)
32 f2(1, 2)
3334
func(i, j int) (10, 20)
3738 //需求:匿名函式,帶引數帶返回值
39 x, y :=func(a, b int) (max, min int) else
47return
48 }(2, 4)
49 fmt.printf("
x=%d, y=%d
", x, y)
50 }
閉包捕獲外部變數的特點
1view codepackage main23
import
"fmt"4
5func main() () //()代表直接呼叫
14 fmt.printf("
外部:a=%d, str=%s\n
", a, str)
15 }
閉包呼叫區域性變數,與普通呼叫函式時區域性變數的區別
1view codepackage main23
import
"fmt"4
5func test() func() int 12}
13func main()
2324
func test01() int
2930
func main01()
go閉包和匿名函式
閉包的概念 是可以包含自由 未繫結到特定物件 變數的 塊,這些變數不在這個 塊內或者任何全域性上下文中定義,而是在定義 塊的環境中定義。要執行的 塊 由於自由變數包含在 塊中,所以這些自由變數以及它們引用的物件沒有被釋放 為自由變數提供繫結的計算環境 作用域 閉包的價值 閉包的價值在於可以作為函式物...
go 匿名函式和閉包
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.匿名函式即沒有名字的...
匿名函式和閉包
匿名函式 匿名函式和普通函式 function box alert box 閉包概念 閉包是指有權訪問另乙個函式作用域中的變數的函式,建立閉包的常見的方式,就是在乙個函式內部建立另乙個函式,通過另乙個函式訪問這個函式的區域性變數。閉包作用 使用閉包有乙個優點,也是其缺點。可以把區域性變數駐留在記憶體...