1 回答

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
正如 Doug 已經(jīng)指出的那樣,該init()函數(shù)將始終在 之前調(diào)用main(),并且順序如此。這意味著當(dāng)init()完成時(shí),隊(duì)列中的defersinit()將執(zhí)行,在這種情況下關(guān)閉你的日志。
在大多數(shù)情況下,您根本不打算打電話log.Close()。請(qǐng)注意,所有Fatal功能log都將os.Exit:
https://golang.org/src/log/log.go?s=9087:9131#L295
并且os.Exit明確說(shuō)defers 的文檔沒(méi)有運(yùn)行
// Exit causes the current program to exit with the given status code.
// Conventionally, code zero indicates success, non-zero an error.
// The program terminates immediately; deferred functions are not run.
func Exit(code int) {
因此,您可能會(huì)說(shuō)標(biāo)準(zhǔn)庫(kù)會(huì)log.Close()在發(fā)生致命錯(cuò)誤時(shí)強(qiáng)制您不要這樣做。有點(diǎn)暗示這沒(méi)什么大不了的。
Panic但是請(qǐng)注意,函數(shù)將defer在退出之前運(yùn)行紅色函數(shù)。
- 1 回答
- 0 關(guān)注
- 176 瀏覽
添加回答
舉報(bào)