這段**的執行結果是什麼?
func
main()
func
defer_call()
()defer
func()
()defer
func()
()panic
("觸發異常"
)}
//執行結果
列印後列印中
列印前panic
: 觸發異常
goroutine 1
[running]
:main.
defer_call()
d:/golandworkapace/src/cn.basecommon/offer/offer1/main.go:
15+0x97
main.
main()
d:/golandworkapace/src/cn.basecommon/offer/offer1/main.go:
8+0x17
process finished with exit code 2
defer 的執行順序是後進先出。當出現 panic 語句的時候,會先按照 defer 的後進先出的順序執行,最後才會執行panic
Golang 的defer執行規則
defer是golang的乙個特色功能,被稱為 延遲呼叫函式 當外部函式返回後執行defer。類似於其他語言的 try catch finally 中的finally,當然差別還是明顯的。在使用defer之前我們應該多了解defer的特性,這樣才能避免使用上的誤區。1.最簡單的deferfunc t...
golang 中多個 defer 的執行順序
引用 ture go 中的乙個示例 package main import fmt func main fmt.println done 程式執行結果為 counting done98 7654 3210從結果可以看出,defer的執行可以看做是乙個filo first in last out 棧。...
golang延遲函式defer
golang的defer優雅又簡潔,是golang的亮點之一。defer在宣告時不會立即執行,而是在函式return後,再按照先進後出的原則依次執行每個defer,一般用於釋放資源 清理資料 記錄日誌 異常處理等。下面舉個例子 package main import fmt func deferte...