golang學習之閉包

2022-01-31 10:46:03 字數 824 閱讀 7484

匿名函式不能夠獨立存在,但可以被賦值於某個變數,即儲存函式的位址到變數中:fplus := func(x, y int) int,然後通過變數名對函式進行呼叫:fplus(3,4)。

當然,也可以直接對匿名函式進行呼叫:func(x, y int) int (3, 4)

func() 

}()

表示引數列表的第一對括號必須緊挨著關鍵字func,因為匿名函式沒有名稱。花括號{}涵蓋著函式體,最後的一對括號表示對該匿名函式的呼叫。

使用defer結合匿名函式(閉包)修改方法返回值:

package main

import "fmt"func f() (ret

int, str string) ()

defer func() ()

return 22, "111 "}

func main()

列印輸出:

23 111 ##########

閉包例項:

package main

import "fmt"func main()

func adder() func(

int) int

}

第一次呼叫adder函式返回乙個func(int) int函式,再次呼叫時區域性變數x的值會被累加,最終輸出:

1 - 21 - 321

golang閉包學習記錄

func testclosure time.sleep time.second 如果這裡不sleep,上面的協程還沒來得及修改共享變數,下面輸出1,fmt.print i 輸出2,說明閉包是對同一變數的引用,而不是copy type field struct func p field print f...

深度學習 之 閉包

1 什麼是閉包?函式執行會形成乙個私有的作用域,來保護裡面的私有變數不受外界的干擾,我們把這種保護機制叫做 閉包 2 什麼時候用?1 函式的封裝其實就是利用了閉包的原理 把實現乙個功能的 進行封裝,以後再用這個功能的時候,直接的執行這個函式即可,而且多次執行,相互也不會衝突 封裝 低耦合高內聚 2 ...

深度學習 之 閉包

1 什麼是閉包?函式執行會形成乙個私有的作用域,來保護裡面的私有變數不受外界的干擾,我們把這種保護機制叫做 閉包 2 什麼時候用?1 函式的封裝其實就是利用了閉包的原理 把實現乙個功能的 進行封裝,以後再用這個功能的時候,直接的執行這個函式即可,而且多次執行,相互也不會衝突 封裝 低耦合高內聚 2 ...