【问题标题】:One line to loop over results of a function call with tuple (results, err)用 tuple (results, err) 循环函数调用结果的一行
【发布时间】:2018-11-27 09:23:30
【问题描述】:

从返回元组(result, err)的函数调用中迭代结果的最佳/标准方法是什么。

例子:

func getSlice() ([]string, error) {
  return []string{"a", "b", "c"}, nil
}

for _, letter := range getSlice() {} //how should it be done here?

这是一件好事吗?

【问题讨论】:

    标签: loops go error-handling slice


    【解决方案1】:

    如果一个函数也返回一个错误,你应该首先检查它,并且只有在返回的错误允许的情况下才继续使用其他结果(通常是等于nil)。

    所以这样做:

    s, err := getSlice()
    if err != nil {
        // Handle error and optionally return
        log.Printf("getSlice error: %v", err)
        return
    
    }
    for _, letter := range s {
        // Use letter
    }
    

    如果出错时不需要返回,只需要使用一次结果,也可以这样:

    if s, err := getSlice(); err == nil {
        for _, letter := range s {
            // Use letter
        }
    } else {
        log.Printf("getSlice error: %v", err)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 2018-12-18
      • 2013-12-24
      • 1970-01-01
      • 2020-03-13
      相关资源
      最近更新 更多