Go語言學習 匿名函式 閉包

2022-10-11 03:18:07 字數 2335 閱讀 9306

匿名函式

匿名函式的定義格式:

func(引數)(返回值)
沒有名字的函式

package main

import "fmt"

// 匿名函式

// var f1 = func (x, y int)

func main()

f1(10, 20)

// 如果只是呼叫一次的函式,還可以簡寫成立即執行函式

func (x, y int) (10, 20)

}

閉包

閉包=函式+引用環境

package main

import "fmt"

// 閉包

func f1(f func())

func f2(x, y int)

// 定義乙個函式對f2進行包裝

func f3() func()

return tmp

}func test(x int)

tmp()

}func test2(x func (int, int), m, n int)

tmp() // x(m, n)

}func test3(x func(int, int), m, n int)

func test4(x func (int, int), m, n int) func()

return tmp

}func main()

乙個函式除了用到它內部定義的語句之外還可以引用它外部的變數

package main

import "fmt"

// 閉包

func f1(f func())

func f2(x, y int)

// 要求:

// f1(f2)

func f3(f func(int, int), x, y int) func()

return tmp

}// 定義乙個函式對f2進行包裝

// func f3() func()

// return tmp

// }

// func test(x int)

// tmp()

// }

// func test2(x func (int, int), m, n int)

// tmp() // x(m, n)

// }

// func test3(x func(int, int), m, n int)

// func test4(x func (int, int), m, n int) func()

// return tmp

// }

func main()

閉包 = 函式 + 外部變數的引用

package main

import "fmt"

// 閉包是什麼

// 閉包是乙個函式,這個函式包含了它外部作用域的乙個變數

// 底層的原理:

// 1. 函式可以作為返回值

// 2. 函式內部查詢變數的順序,先在自己內部找,找不到往外層找

func adder(x int) func(int) int

}func main()

閉包例子

package main

import (

"fmt"

"strings"

)// 閉包

func makesuffixfunc(suffix string) func(string) string

return name }}

func main() package main

import (

"fmt"

"strings"

)// 閉包

func makesuffixfunc(suffix string) func(string) string

return name }}

func main()

閉包=函式+引用環境

package main

import "fmt"

// 關鍵字 函式名(引數)(返回值){}

func calc(base int) (func(int) int, func(int) int)

sub := func(i int) int

return add, sub

}func main()

GO語言學習 匿名函式和閉包

go語言支援匿名函式,即函式可以像普通變數一樣被傳遞或使用。使用方法如下 a func input1 int int return input1 1 b a 2 go語言的匿名函式就是閉包,以下是 go語言程式設計 中對閉包的解釋 基本概念 閉包是可以包含自由 未繫結到特定物件 變數的 塊,這些變數...

Go語言學習筆記 閉包

首先這裡的func int int是指函式test 返回乙個函式 類似的,返回多個值是這樣寫 func a int,int,float32 func test func int int func main 書中對閉包的解釋 閉包的概念 是可以包含自由 未繫結到特定物件 變數的 塊,這些變數不在這個 ...

go閉包和匿名函式

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