面试题答案
一键面试在Go语言中,defer
与匿名函数结合常用于文件操作场景,确保文件在使用完毕后被正确关闭。
假设我们要读取一个文件的内容,示例代码如下:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("test.txt")
if err != nil {
fmt.Println("无法打开文件:", err)
return
}
defer func() {
err := file.Close()
if err != nil {
fmt.Println("关闭文件时出错:", err)
}
}()
// 这里进行文件读取操作
// 例如:
data := make([]byte, 1024)
n, err := file.Read(data)
if err != nil {
fmt.Println("读取文件时出错:", err)
return
}
fmt.Println("读取到的内容:", string(data[:n]))
}
在上述代码中:
- 首先使用
os.Open
打开文件,如果打开失败则打印错误并返回。 - 使用
defer
关键字结合匿名函数,在函数结束时关闭文件。匿名函数中对文件关闭操作的错误进行了处理。 - 在
defer
语句之后,进行文件的读取操作,读取文件内容并打印。
通过这种方式,无论文件读取过程中是否发生错误,文件都会在函数结束时被关闭,从而保证资源的正确清理。