据我所知(来自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
}
这是惯用的吗?
答案 0 :(得分:3)
取决于具体情况。如果返回的类型是指针,则可以返回相应类型的空值或nil
。但是如果对函数有意义的话,你也可以将部分结果与错误一起返回。例如,在bufio
package Reader.ReadString
中返回字符串和错误。 docs state:
如果ReadString在找到分隔符之前遇到错误,它会返回错误前读取的数据和错误本身(通常是io.EOF)。