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