GO語言————6.10 使用閉包除錯

FLy_鵬程萬里發表於2018-07-03

6.10 使用閉包除錯

當您在分析和除錯複雜的程式時,無數個函式在不同的程式碼檔案中相互呼叫,如果這時候能夠準確地知道哪個檔案中的具體哪個函式正在執行,對於除錯是十分有幫助的。您可以使用 runtime 或 log 包中的特殊函式來實現這樣的功能。包 runtime中的函式 Caller() 提供了相應的資訊,因此可以在需要的時候實現一個 where() 閉包函式來列印函式執行的位置:

where := func() {
	_, file, line, _ := runtime.Caller(1)
	log.Printf("%s:%d", file, line)
}
where()
// some code
where()
// some more code
where()

您也可以設定 log 包中的 flag 引數來實現:

log.SetFlags(log.Llongfile)
log.Print("")

或使用一個更加簡短版本的 where 函式:

var where = log.Print
func func1() {
where()
... some code
where()
... some code
where()
}

相關文章