为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中断开 if 语句的干净方法

在 Go 中断开 if 语句的干净方法

Go
慕容森 2022-08-01 18:43:04
我有以下情况:if condition {  if nestedCondition {    // logic    // I want to somehow break at this point but also be able    // to check the outer otherCondition  }  if otherNestedCondition {    // logic  }}if otherCondition {  //logic}有没有办法“打破”,但也能够检查?nestedConditionotherCondition
查看完整描述

4 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

有没有办法从嵌套条件中“中断”,同时也能够检查其他条件?

哈哈


查看完整回答
反对 回复 2022-08-01
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

中断语句仅从 中断为切换选择。没有中断语句可以从 if 或任意中断。如果可能的话,重新组织和重新排列你的条件,这样你就不会最终陷入你想脱离.if

你也可以做的是使用一个函数(匿名或命名的),当你想要“中断”时,从它返回:

if condition {

    func() {

        if nestedCondition {

            // To break:

            return

        }

        if otherNestedCondition {

            // logic

        }

    }()

}

if otherCondition {

    //logic

}

另一种解决方案是使用 goto 和标记语句

  if condition {

        if nestedCondition {

            // To break:

            goto outside

        }

        if otherNestedCondition {

            // logic

        }

    }

outside:

    if otherCondition {

        //logic

    }

尽管请注意,在Go(以及大多数语言中)使用非常罕见,并且不应该“过度使用”(或根本使用)。goto


查看完整回答
反对 回复 2022-08-01
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

您可以平展 if 子句:


if a {

    if b {

       // do stuff

       // this is where we want to "break"

    }

    if c {

       // do other stuff

    }

}

if d {

   // do even more stuff

}

可能变成


e := true

if a && b {

   // do stuff

   e = false

}

if a && c && e { // this will get skipped if e is false

   // do other stuff

}

if d {

   // do even more stuff

}

通常,嵌套较少的 if 子句更易于阅读。或者,您可以按照其他帖子中的建议隐藏函数中的复杂性。


查看完整回答
反对 回复 2022-08-01
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

尽管实现您尝试执行的操作的正确方法是重构流,但这可能是使用 的适当情况。goto


if condition {

  if nestedCondition {

    // logic

    goto otherCondition

  }

  if otherNestedCondition {

    // logic

  }

}


otherCondition:{

  //logic

}


查看完整回答
反对 回复 2022-08-01
  • 4 回答
  • 0 关注
  • 301 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号