Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 使用tuple(results,err)循环函数调用结果的一行_Loops_Go_Error Handling_Slice - Fatal编程技术网

Loops 使用tuple(results,err)循环函数调用结果的一行

Loops 使用tuple(results,err)循环函数调用结果的一行,loops,go,error-handling,slice,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? 这是一个很好的考虑事项吗?< P>如果函数也返回一个错误,你应该首先检查它,如果返回的错误允许的话,它只能继续使用其他结果(如果

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

例如:

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

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

这是一个很好的考虑事项吗?

< P>如果函数也返回一个错误,你应该首先检查它,如果返回的错误允许的话,它只能继续使用其他结果(如果它等于<代码> 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)
}
如果出现错误时不需要返回,并且只需要使用一次结果,也可以这样做:

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