8.1 defer的调用
一、defer的调用
defer的调用确保调用在函数结束时发生
参数在defer语句时计算
defer相当于一个栈,多个defer声明时,先声明的后输出func tryDefer() { defer fmt.Println(1) defer fmt.Println(2) fmt.Println(3) } func main() { tryDefer() }备注:输出结果:3 2 1
举例
func writeFile(filename string) { // 创建文件 file, err := os.Create(filename) if err != nil { panic(err) } // 关闭文件 defer file.Close() // 使用bufio写入文件 writer := bufio.NewWriter(file) // 关闭写入流 defer writer.Flush() // 写入文件 f := fib.Fibonacci() for i := 0; i < 20; i++ { fmt.Fprintln(writer, f()) } } func main() { writeFile("fib.txt") }备注:写入文件时候,使用
defer的特性,直接定义好文件关闭,防止以后忘记某个接口需要同时关闭时候,防止以后忘记,可以直接打开之后就关闭,用
defer声明即可
Last updated
Was this helpful?