package main
import (
"fmt"
"os"
)
// Defer用于确保函数调用在程序执行的后期执行,通常用于清理目的
func writeFile(f *os.File, p string) {
fmt.Println("writing")
fmt.Fprintln(f, p) // 写入文件
}
func createFile(p string) *os.File {
fmt.Println("creating")
f, err := os.Create(p)
if err != nil {
panic(err)
}
return f
}
func closeFile(f *os.File) {
fmt.Println("closing")
err := f.Close()
if err != nil {
fmt.Fprintf(os.Stderr, "error: %v \n", err)
os.Exit(1)
}
}
func main() {
f := createFile("./defer.txt") // 1
defer closeFile(f) // 3 推迟关闭文件,等写入完成后再执行关闭,一般是再函数结束后执行.
writeFile(f, "test") // 2
}