美文网首页
break continue goto

break continue goto

作者: 一斗 | 来源:发表于2019-02-15 17:27 被阅读0次

break

  • break只能跳出离它最近的一层循环
  • 使用标签后跳出到指定标签,跳出后不再执行对应for循环,标签只能放在for前面

单独使用

func main() {
    for i := 'a'; i < 'a'+3; i++ {
        fmt.Printf("\n%c\n", i)
        for j := 0; j < 5; j++ {
            fmt.Printf("%d ", j)
            if j > 2 {
                break
            }
        }
    }
}

输出

a
0 1 2 3
b
0 1 2 3
c
0 1 2 3

使用标签

func main() {
Loop:
    for i := 'a'; i < 'a'+3; i++ {
        fmt.Printf("\n%c\n", i)
        for j := 0; j < 5; j++ {
            fmt.Printf("%d ", j)
            if j > 2 {
                break Loop
            }
        }
    }
}

输出

a
0 1 2 3

continue

continue使用和break类似

单独使用

func main() {
    for i := 'a'; i < 'a'+3; i++ {
        fmt.Printf("\n%c\n", i)
        for j := 0; j < 5; j++ {
            fmt.Printf("%d ", j)
            if j > 2 {
                continue
            }
        }
    }
}

输出

a
0 1 2 3 4
b
0 1 2 3 4
c
0 1 2 3 4

使用标签

func main() {
Loop:
    for i := 'a'; i < 'a'+3; i++ {
        fmt.Printf("\n%c\n", i)
        for j := 0; j < 5; j++ {
            fmt.Printf("%d ", j)
            if j > 2 {
                continue Loop
            }
        }
    }
}

输出

a
0 1 2 3
b
0 1 2 3
c
0 1 2 3

goto

  • goto语句可以随意跳转
  • 标签可以在for前面也可以在后面
func main() {
Loop:
    fmt.Println("TEST")
    for j := 0; j < 5; j++ {
        fmt.Println(j)
        if j > 2 {
            goto Loop
        }
    }
}

输出

TEST
0
1
2
3
TEST
0
1
2
...
func main() {
    for j := 0; j < 5; j++ {
        fmt.Println(j)
        if j > 2 {
            goto Loop
        }
    }
Loop:
    fmt.Println("TEST")
}

输出

0
1
2
3
TEST

相关文章

网友评论

      本文标题:break continue goto

      本文链接:https://www.haomeiwen.com/subject/rrymeqtx.html