返回结构时进行错误处理

时间:2014-12-05 12:10:52

标签: error-handling go

据我所知(来自here,以及阅读标准库),在库中处理错误的同步方式返回数据和错误。

问题是,当我运行时必须返回错误,我将返回什么作为我的数据?一个空结构? 0?

这是一个例子

// Load the config
func LoadConfig(location string) (Config, error) {
    // Read the file
    configFile, err := ioutil.ReadFile(location)
    if err != nil {
        return Config{}, err
    }

    // Convert it to Config struct
    var config Config
    json.Unmarshal(configFile, &config)
    return config, nil
}

这是惯用的吗?

1 个答案:

答案 0 :(得分:3)

取决于具体情况。如果返回的类型是指针,则可以返回相应类型的空值或nil。但是如果对函数有意义的话,你也可以将部分结果与错误一起返回。例如,在bufio package Reader.ReadString中返回字符串和错误。 docs state

  

如果ReadString在找到分隔符之前遇到错误,它会返回错误前读取的数据和错误本身(通常是io.EOF)。