zoukankan      html  css  js  c++  java
  • 【转】golang for select 循环跳出

    原文:https://blog.csdn.net/bravezhe/article/details/81674591

    ---------------------------------------------------------

    golang for select 循环跳出
    原创墨子哲 发布于2018-08-14 21:10:30 阅读数 4194 收藏
    展开
    执行以下代码,发现无法跳出for循环:

    func SelectTest() {
    i := 0
    for {
    select {
    case <-time.After(time.Second * time.Duration(2)):
    i++
    if i == 5 {
    fmt.Println("跳出for循环")
    }
    }
    fmt.Println("for循环内 i=", i)
    }
    fmt.Println("for循环外")
    }
    解决办法有两个:

    1.使用break:

    func SelectTest() {
    i := 0
    Loop:
    for {
    select {
    case <-time.After(time.Second * time.Duration(2)):
    i++
    if i == 5 {
    fmt.Println("跳出for循环")
    break Loop
    }
    }
    fmt.Println("for循环内 i=", i)
    }

    fmt.Println("for循环外")

    }
     

    2.使用goto:

    func SelectTest() {
    i := 0
    for {
    select {
    case <-time.After(time.Second * time.Duration(2)):
    i++
    if i == 5 {
    fmt.Println("跳出for循环")
    goto Loop
    }
    }
    fmt.Println("for循环内 i=", i)
    }
    Loop:
    fmt.Println("for循环外")
    }
    分析:

    使用break lable 和 goto lable 都能跳出for循环;不同之处在于:break标签只能用于for循环,且标签位于for循环前面,goto是指跳转到指定标签处
    ————————————————
    版权声明:本文为CSDN博主「墨子哲」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/bravezhe/article/details/81674591

  • 相关阅读:
    arm单板上移植gdb
    video on web
    chromium源码阅读
    CE-HTML简介
    multi-tap
    DPDK 网卡RSS(receive side scaling)简介
    c语言实现带LRU机制的哈希表
    Linux TCP协议使用的变量
    scp源码浅析
    Linux e1000e网卡驱动
  • 原文地址:https://www.cnblogs.com/oxspirt/p/12155091.html
Copyright © 2011-2022 走看看