golang學習系列 17 閉包的應用

2021-10-01 21:51:14 字數 900 閱讀 5568

目錄

一. 閉包作返回值

示例1示例2 結論

二. 用閉包除錯

func add() func(int) int 

}func add2(x int) func(a int) int

}func main()

結果如下:

func add(x int) func(y int) int 

}func main()

結果如下:

定義閉包時引用的外部變數被保留下來了,呈現出來型別 c\c++ static 變數的效果

我們希望能在日誌裡看到是哪個檔案裡面哪個函式執行,可以使用 runtime 或者 log 包中的函式來實現該功能。

1. runtime 包中 caller() 函式能提供一些資訊:  程式計數器、檔名和行號

2. log 包可以設定 flag 後呼叫 print() 來列印一些資訊

示例一

where := func() 

//todo

where()

//todo

where()

示例二

log.setflags(log.llongfile)

where := log.print

//todo

where()

//todo

where()

golang閉包學習記錄

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

golang學習之閉包

匿名函式不能夠獨立存在,但可以被賦值於某個變數,即儲存函式的位址到變數中 fplus func x,y int int,然後通過變數名對函式進行呼叫 fplus 3,4 當然,也可以直接對匿名函式進行呼叫 func x,y int int 3,4 func 表示引數列表的第一對括號必須緊挨著關鍵字f...

golang閉包裡的坑

介紹 go的閉包是乙個很有用的東西。但是如果你不了解閉包是如何工作的,那麼他也會給你帶來一堆的bug。這裡我會拿出go in action這本書的一部分 來說一說在使用閉包的時候可能遇到的坑。全部的 在github上。閉包的坑 首先看一段 search search.go launch a goro...