登录
首页 >  Golang >  Go问答

循环函数的状态返回

来源:stackoverflow

时间:2024-03-21 11:27:28 185浏览 收藏

在 Go 中编写循环函数时,可以使用“提前返回”风格来优雅地处理状态返回。通过检查条件,如果检测到错误,可以立即返回错误值,而无需使用标志。这种方法有助于保持代码的简洁性和可读性。此外,无标记 switch 语句可用于处理重叠条件,并根据具体错误返回详细的消息。通过在 if 块中添加 break 语句,可以控制是否记录所有错误或仅报告发生错误的事实。

问题内容

我有以下函数,它会迭代响应列表,如果成功打印正常或错误,最后(函数完成执行后)我需要返回http 200(如果 ok200 条件始终有效)或者 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)
        }
    }
}

解决方案


在这些情况下我更喜欢“提前返回”风格。这是一些示例:

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

我想说你编写的方式已经很干净了,为了改进它,你可以使用无标记 switch 语句,这将允许重叠条件,这意味着你可以为可能发生的每个错误返回详细的错误消息。

除此之外,您还可以在 if 块中添加一个 break 语句,具体取决于您想了解所有错误还是仅了解是否发生了任何错误。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>