代码之家  ›  专栏  ›  技术社区  ›  George Aristy

返回Go中的错误时结果值的最佳实践

go
  •  1
  • George Aristy  · 技术社区  · 6 年前

    如果函数同时返回值类型和错误类型,那么当错误类型为非零时,确保值类型为nild/zero值是可行的吗?

    例子:

    func mayError() ([]string, error) {
      ...
    }
    

    应该 []string 返回值为 nil 如果 error 不是 ?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Elias Van Ootegem    6 年前

    foo := myType{
        Bar: 123,
        Foo: "some string",
    }
    
    b, _ := json.Marshal(foo)
    

    slice, _ := mayError()
    

    slice, _ := mayError() // returns nil, someErr
    // panic
    if slice[0] != "" {
    }
    

    mayError