猿问

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

我有以下情况:


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


慕容森
浏览 302回答 4
4回答

至尊宝的传说

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

ABOUTYOU

中断语句仅从 中断为、切换或选择。没有中断语句可以从 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

有只小跳蛙

您可以平展 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 := trueif 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 子句更易于阅读。或者,您可以按照其他帖子中的建议隐藏函数中的复杂性。

开心每一天1111

尽管实现您尝试执行的操作的正确方法是重构流,但这可能是使用 的适当情况。gotoif condition {  if nestedCondition {    // logic    goto otherCondition  }  if otherNestedCondition {    // logic  }}otherCondition:{  //logic}
随时随地看视频慕课网APP

相关分类

Go
我要回答