golang label breaks

我们在for多层嵌套时,有时候需要直接跳出所有嵌套循环, 这时候就可以用到go的label breaks特征了。

先看一个范例代码:

package main

import ( 
    "fmt" 
)

func main() { 
    fmt.Println("1")

Exit: 
    for i := 0; i < 9; i++ { 
        for j := 0; j < 9; j++ { 
            if i+j > 15 { 
                fmt.Print("exit") 
                break Exit 
            } 
        } 
    }

    fmt.Println("3") 
}

执行效果:

image

注意,

  • label要写在for循环的开始而不是结束的地方。和goto是不一样的。虽然它是直接break退出到指定的位置。

break的标签和goto的标签的区别可以参考下面代码:

JLoop: 
    for i := 0; i < 10; i++ { 
        fmt.Println("label i is ", i) 
        for j := 0; j < 10; j++ { 
            if j > 5 { 
                //跳到外面去啦,但是不会再进来这个for循环了 
                break JLoop 
            } 
        } 
    }

    //跳转语句 goto语句可以跳转到本函数内的某个标签 
    gotoCount := 0 
GotoLabel: 
    gotoCount++ 
    if gotoCount < 10 { 
        goto GotoLabel //如果小于10的话就跳转到GotoLabel 
    }

 

break 标签除了可以跳出 for 循环,还可以跳出 select switch 循环, 参考下面代码:

L: 
    for ; count < 8192; count++ { 
        select { 
        case e := <-self.pIdCh: 
            args[count] = e

        default: 
            break L // 跳出 select 和 for 循环 
        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值