go - 简化 golang 中重复出现的 switch case

标签 go

我想了解是否有更好的方法来简化 golang 中重复出现的 switch case。我有一个可以返回多个错误的方法,但我对 3 个特定错误感兴趣,在这些错误中我需要返回一个特定的注释错误而不是一般错误。但是 case1,case2 返回 err1,err2 但是在 case3 的情况下,我需要使用不同的参数调用相同的方法,并且如果方法返回 err1,err2 也需要处理。如果您有任何建议,请提供。目前我正在以下面的方式处理,但试图看看我是否可以简化调用 case1、case2 的重复性。

    _, err := doSomething(var1)
    if err != nil {
        switch err.Error() {
        case case1:
            return err1
        case case2:
            return err2
        case case3:
            _, err := doSomething(var2)
            switch err.Error() {
            case case1:
                return err1
            case case2:
                return err2
            default:
                return err
            }
        default:
            return err

如果您需要更多详细信息或需要对我的问题本身进行更多说明,请告诉我。

提前致谢。

最佳答案

翻译特殊情况下的错误。继续常见的处理。

_, err := doSomething(var1)
if err != nil {
    if err.Error() == case3 {
        _, err = doSomething(var2)
    }
    switch err.Error() {
    case case1:
        return err1
    case case2:
        return err2
    default:
        return err
    }
}

关于go - 简化 golang 中重复出现的 switch case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70732787/

相关文章:

postgresql - 使用 docker-compose 时如何从 golang 应用程序连接到 postgres?

parallel-processing - 数据通道关闭时 Goroutines 不退出

json - 在 config.json 文件中输入自定义类型值

list - map slice 的 map

go - 如何 GZIP 压缩 Go 中的 http 请求?

go - 如何阻止 go html/template 转义路径(尝试过 .HTML .JS 等)

performance - 可变参数函数在 Go 中导致不必要的堆分配

websocket - 如何让 websocket 客户端等到服务器运行?

string - 无法将(无类型字符串常量)转换为 *string

去 Gin : Creating generic custom validators