面试题答案
一键面试-
多个defer语句的执行顺序: 在Go语言中,多个defer语句的执行顺序是后进先出(LIFO,Last In First Out),也就是栈的顺序。当一个函数中有多个defer语句时,最后声明的defer语句会最先执行。
-
使用defer进行文件资源管理的示例:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("test.txt")
if err != nil {
fmt.Println("Failed to open file:", err)
return
}
defer file.Close()
// 这里可以进行文件读取等操作
// 例如:
data := make([]byte, 1024)
n, err := file.Read(data)
if err != nil {
fmt.Println("Failed to read file:", err)
return
}
fmt.Println("Read data:", string(data[:n]))
}
在上述代码中,defer file.Close()
语句确保了无论 os.Open
之后的代码是否发生错误,文件最终都会被关闭。defer
语句会在函数返回之前执行,所以即使 file.Read
发生错误导致函数提前返回,file.Close()
也会被调用,从而避免文件资源泄露。