Function 返回循环的函数状态
我有一个在响应列表上迭代的函数,如果成功打印ok或error,最后(在函数完成执行后),我需要返回http 200(如果Function 返回循环的函数状态,function,go,Function,Go,我有一个在响应列表上迭代的函数,如果成功打印ok或error,最后(在函数完成执行后),我需要返回http 200(如果ok或200条件始终有效)或http 500(如果失败)(甚至一次失败)。我可以使用一些标志(我希望避免)但在Golang有更干净的方法吗 func getResults(results chan resultsList) { for res := range results { if res.Data != "ok" &&a
ok
或200
条件始终有效)或http 500(如果失败)(甚至一次失败)。我可以使用一些标志(我希望避免)但在Golang有更干净的方法吗
func getResults(results chan resultsList) {
for res := range results {
if res.Data != "ok" && res.Data != 200 {
fmt.Println("error")
} else {
fmt.Printf("finish time %s \n", res.Name)
}
}
}
我要说的是,您编写它的方式已经相当干净了,为了改进它,您可以使用无标记switch语句,这将允许重叠条件,这意味着您可以为可能发生的每个错误返回详细的错误消息 除此之外,您还可以在if块中放入break语句,这取决于您是想知道所有错误还是发生了任何错误。在这些情况下,我更喜欢“尽早返回”样式。以下是一些例子:
import (
"fmt"
"log"
)
func getResults(results chan resultsList) error {
for res := range results {
if res.Data != "ok" || res.Data != 200 {
return fmt.Errorf("Data: %v", res.Data)
}
fmt.Println("finish time", res.Name)
}
return nil
}
func main() {
e := getResults(something)
if e != nil {
log.Fatal(e)
}
}
好的,但是您建议如何返回最终结果?如果一次迭代失败,返回500,如果所有成功返回200…取决于您是否希望实际返回这些值/结果。如果您只是想打印出有错误,那么您不需要返回任何内容,只需打印即可。如果要根据发生的错误采取措施,则可以返回一个无符号整数片段,并对其进行迭代,或将逻辑直接写入所提供的函数中。如果函数即使只返回一次失败,也应返回失败,为什么要在第一次失败后继续处理通道?还是因为其他原因?