go - 如果 error 不是 nil 为什么要同时返回 err 和 nil?

标签 go return-value

我正在关注 golang wiki instruction并发现这令人困惑:

func loadPage(title string) (*Page, error) {
    filename := title + ".txt"
    body, err := ioutil.ReadFile(filename)
    if err != nil {
        return nil, err
    }
    return &Page{Title: title, Body: body}, nil
}

如果err不等于nil,为什么返回nil?

难道不应该是:

if err != nil {
    return err
}

就像golang errors and values中描述的那样?

最佳答案

该函数返回 2 个东西:一个页面(指针)和一个错误。如果发生错误,则没有要返回的页面,因此返回的第一个值为 nil。返回的第二个值是错误,err,这是应该的。

关于go - 如果 error 不是 nil 为什么要同时返回 err 和 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52007191/

相关文章:

go - 如何直接将Podio AuthToken传给podio-go客户端

c++ - 如何正确释放返回值

python - 函数的输入参数是否总是默认返回?

c - 为什么此代码为所有输入打印 "1"?

php - 为什么在 PHP 中操作变量之前必须先将函数返回值赋给变量

go - Golang嵌入了“time.Time”,打印在其他字段上

go - 如何在父方法中调用子方法?

go - 仅当文件自上次调用 os.Lstat 后发生更改时才调用 os.Lstat

python - 在 python 中,返回在函数体中创建的对象会对其进行深度复制?

pointers - 如何编写将数组成员分配给 self 的方法