go语言开发基础13 - 之go语言里的流控制之goto、break、continue

一、break

break语句可以结束for、switch和select的代码块。

break语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的for、switch和 select的代码块上。 举个例子:

func breakDemo1() {
BREAKDEMO1:
    for i := 0; i < 10; i++ {
        for j := 0; j < 10; j++ {
            if j == 2 {
                break BREAKDEMO1    // 满足条件时跳转到 BREAKDEMO1 标签的位置
            }
            fmt.Printf("%v-%v\n", i, j)
        }
    }
    fmt.Println("...")
}

 

二、goto

goto语句通过标签进行代码间的无条件跳转。goto语句可以在快速跳出循环、避免重复退出上有一定的帮助。Go语言中使用goto语句能简化一些代码的实现过程。 例如双层嵌套的for循环要退出时:

一、使用break的代码实现
func gotoDemo1() {
    var breakFlag bool
    for i := 0; i < 10; i++ {
        for j := 0; j < 10; j++ {
            if j == 2 {
                // 设置退出标签
                breakFlag = true
                break
            }
            fmt.Printf("%v-%v\n", i, j)
        }
        // 外层for循环判断
        if breakFlag {
            break
        }
    }
}

二、使用goto简化代码 func gotoDemo2() { for i := 0; i < 10; i++ { for j := 0; j < 10; j++ { if j == 2 { // 设置退出标签 goto breakTag } fmt.Printf("%v-%v\n", i, j) } } return // 标签 breakTag: fmt.Println("结束for循环") }

 

三、continue:退出当前循环进入下一循环

continue语句可以结束当前循环,开始下一次的循环迭代过程,仅限在for循环内使用。

在 continue语句后添加标签时,表示开始标签对应的循环。例如:

func continueDemo() {
forloop1:
    for i := 0; i < 5; i++ {
        // forloop2:
        for j := 0; j < 5; j++ {
            if i == 2 && j == 2 {
                continue forloop1    // 跳转到 forloop1 标签的循环。
            }
            fmt.Printf("%v-%v\n", i, j)
        }
    }
}

 

四、猜数字练习

func inputDemo() {
    var n int
    n = rand.Intn(100)     // 获取一百以内的随机数

    for {
        var input int
        fmt.Scanf("%d\n", &input)     // 将用户输入的内容赋值给input的内存地址
        flag := false
        switch {
        case input == n:    // 如果用户输入的内容等于随机数
            fmt.Println("you are right")
            flag = true      // 猜对了,退出循环
        case input > n:     // 用户输入大于随机数
            fmt.Println("Bigger")
        case input < n:      // 用户输入小于随机数
            fmt.Println("lass")
        }
        if flag {
            break
        }
    }
}

 

posted @ 2020-05-28 17:53  欧-阳  阅读(228)  评论(0)    收藏  举报