使用元组循环函数调用结果的一行(结果,错误)

时间:2018-06-18 13:49:14

标签: loops go error-handling slice

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

示例:

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

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

这是一件好事吗?

1 个答案:

答案 0 :(得分:2)

如果函数也返回错误,则应始终首先检查该错误,并且只有在返回的错误允许的情况下才会继续使用其他结果(通常如果它等于nil)。< / p>

所以这样做:

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)
}