MST

星途 面试题库

面试题:Go语言中defer语句在文件资源释放场景下的应用

在Go语言中,假设你需要打开一个文件进行读取操作,并且要确保在函数结束时正确关闭文件。请编写一个函数示例,展示如何使用defer语句来实现文件资源的释放,同时说明defer语句执行的时机。
21.8万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "os"
)

func readFile(filePath string) {
    file, err := os.Open(filePath)
    if err != nil {
        fmt.Println("Error opening file:", err)
        return
    }
    defer file.Close()

    // 这里可以进行文件读取操作
    // 例如:
    // var buf [1024]byte
    // n, err := file.Read(buf[:])
    // if err != nil {
    //     fmt.Println("Error reading file:", err)
    //     return
    // }
    // fmt.Println(string(buf[:n]))
}

defer语句执行的时机:当包含defer语句的函数执行到返回时,会按照defer语句定义的逆序依次执行这些defer语句。也就是说,先定义的defer语句后执行,后定义的defer语句先执行。在上述函数中,当readFile函数执行到return语句或者函数结束时,会执行defer file.Close()语句,确保文件被正确关闭。