重置golang中的错误是否是错误的做法?

jon*_*eld 5 error-handling go

当将字符串解析为文本时,我希望任何不可解析的字符串导致零时间然后继续。

passwordLastUsed, err = time.Parse(time.RFC3339, record[lastUsed])
if err != nil {
    err = nil
    passwordLastUsed = time.Time{}
}
Run Code Online (Sandbox Code Playgroud)

这段代码看起来有些杂乱,'ineffassign'短绒棉衣将其返回给'err = nil'语句:

警告:无效分配给err(ineffassign)

有没有更好的方法来解决这个问题,还是我应该忽略棉短绒?

Fli*_*mzy 7

重设错误变量不是坏习惯,如果您要这么做的话。

设置以后不使用的变量是不好的做法,这就是警告的含义。

有可能永远不会有原因的重置故障,你正在做的,因为之后的iferr永远nil

如果您仅在某些情况下进行重置,这确实很有意义。一个常见的例子:

result, err := db.Query(...)
if err == sql.ErrNoRows {
    err = nil // Ignore not-found rows
}
if err != nil {
    return err // But return all other errors
}
Run Code Online (Sandbox Code Playgroud)