MST

星途 面试题库

面试题:Go中匿名函数在错误处理场景的应用

请描述在Go语言中,如何利用匿名函数优雅地处理文件读取时可能出现的错误。假设需要读取一个文件内容,并在读取失败时记录错误日志,使用匿名函数实现该功能,并解释代码逻辑。
38.0万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "io/ioutil"
    "log"
)

func main() {
    content, err := func() ([]byte, error) {
        data, err := ioutil.ReadFile("test.txt")
        if err != nil {
            log.Println("读取文件失败:", err)
            return nil, err
        }
        return data, nil
    }()
    if err == nil {
        fmt.Println(string(content))
    }
}

代码逻辑解释

  1. 定义了一个匿名函数,该匿名函数没有参数,返回值为([]byte, error),即文件内容字节切片和可能出现的错误。
  2. 在匿名函数内部使用ioutil.ReadFile尝试读取文件。如果读取过程中发生错误,使用log.Println记录错误日志,并返回nil和错误。如果读取成功,则返回文件内容和nil
  3. 调用匿名函数并将返回值赋值给contenterr
  4. 最后检查err是否为nil,如果是则输出文件内容,否则说明读取失败,错误已在匿名函数内部记录。