• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言流程控制中的break,continue和goto(七)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

break(跳出循环)

break用于跳出整个循环,如下:

func main() {
    for i:=0;i<10;i++{
        if i>3{
            break
        }
        fmt.Println(i)
    }
}

// 0 1 2 3

代码里只会打印到3,当大于3时会跳出整个for循环,注意整个for循环指的是直接包含break的那层for循环,举个例子:

func main() {
    for i:=0;i<10;i++{
        for j:=0;j<10;j++ {
            if j == 5 {
                break
            }
            fmt.Printf("%v-%v\n",i, j)
        }
    }
}

查看上述代码的结果,就会发现内层循环只能打印到4,而外层循环可以到9(即走完了整个for循环)。

 

除此之外,我们还可以使用标签来退出指定循环。改造上面的双层循环代码,如下:

func main() {
    EX:
    for i:=0;i<10;i++{
        for j:=0;j<10;j++ {
            if j == 5 {
                break EX
            }
            fmt.Printf("%v-%v\n",i, j)
        }
    }
}

我在最外层for循环上面加一个 EX 标签,然后 break EX,此时的结果就是当j==5时,从最外面的for循环退出来了。为了对比,可以再试下:

func main() {
    for i:=0;i<10;i++{
        EX:
        for j:=0;j<10;j++ {
            if j == 5 {
                break EX
            }
            fmt.Printf("%v-%v\n",i, j)
        }
    }
}

其实这种写法跟不加标签是一样的效果,上面也说到了,break是退出当前包含它的循环的。

 

continue(继续下一次循环)

continue 是继续下一次的循环,与 break 的区别就是不跳出整个循环,只跳过此次循环:

func main() {
    for i:=0;i<10;i++{
        if i==5{
            continue
        }
        fmt.Println(i)
    }
}

// 跳过了5,继续后面的循环
// 0 1 2 3 4 6 7 8 9

 

continue 也支持标签写法:

func main() {
    EX:
    for i:=0;i<10;i++{
        for j:=0;j<10;j++ {
            if j == 5 {
                continue EX
            }
            fmt.Printf("%v-%v\n",i, j)
        }
    }
}

 

goto(跳转到指定标签)

goto是个好东西,它可以跳转到我们指定的标签,从而执行那部分代码,例子:

func main() {
    for i:=0;i<10;i++{
        for j:=0;j<10;j++ {
            if j == 5 {
                goto breakTag
            }
            fmt.Printf("%v-%v\n",i, j)
        }
        breakTag:
            break
    }
}

如上代码,当 j==5 时,使用goto跳转到breakTag标签处,而这个标签下执行了break(注意break位置),从而使得最外层的for循环中断,是不是很好用。但是一般不主张使用goto语句,可能是因为太灵活反而容易造成程序混乱。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何在Debian 10上使用X2Go设置远程桌面发布时间:2022-07-10
下一篇:
gobuild和goinstall发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap