面试题答案
一键面试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))
}
}
代码逻辑解释:
- 定义了一个匿名函数,该匿名函数没有参数,返回值为
([]byte, error)
,即文件内容字节切片和可能出现的错误。 - 在匿名函数内部使用
ioutil.ReadFile
尝试读取文件。如果读取过程中发生错误,使用log.Println
记录错误日志,并返回nil
和错误。如果读取成功,则返回文件内容和nil
。 - 调用匿名函数并将返回值赋值给
content
和err
。 - 最后检查
err
是否为nil
,如果是则输出文件内容,否则说明读取失败,错误已在匿名函数内部记录。