本文實例講述了GO語言延遲函數defer用法。分享給大家供大家參考。具體分析如下:
defer 在聲明時不會立即執行,而是在函數 return 后,再按照 FILO (先進后出)的原則依次執行每一個 defer,一般用于異常處理、釋放資源、清理數據、記錄日志等。這有點像面向對象語言的析構函數,優雅又簡潔,是 Golang 的亮點之一。
代碼1:了解 defer 的執行順序
import "fmt"
func fn(n int) int {
defer func() {
n++
fmt.Println("3st:", n)
}()
defer func() {
n++
fmt.Println("2st:", n)
}()
defer func() {
n++
fmt.Println("1st:", n)
}()
return n //沒有做任何事情
}
func main() {
fmt.Println("函數返回值:", fn(0))
}
1st: 1
2st: 2
3st: 3
函數返回值: 0
代碼2:經典應用實例
dstFile, err := os.Create(dst)
if err != nil {
return
}
defer dstFile.Close()
return io.Copy(dstFile, srcFile)
}
希望本文所述對大家的GO語言程序設計有所幫助。
新聞熱點
疑難解答