break,contine和goto

break,continue

break,continue与PHP中的类似,通过break跳出当前最内部循环,通过continue执行下一次循环,go中可以通过标签进行跳转标签处

break

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main

import "fmt"

func main() {

fmt.Println("结束当前最内层循环")
for i := 0; i < 2; i++ {
for j := 0; j < 5; j++ {
switch j {
case 2:
fmt.Println(i, j)
//结束当前switch循环,外层的 for j 循环依然会继续运行
break
case 3:
fmt.Println(i, j)
break
}
}
}

fmt.Println("跳转到标签结束循环")
OutLoop:
for i := 0; i < 2; i++ {
for j := 0; j < 5; j++ {
switch j {
case 2:
fmt.Println(i, j)
// 跳转到OutLoop标签处,结束最外层循环
break OutLoop
case 3:
fmt.Println(i, j)
break OutLoop
}
}
}
//结束当前最内层循环
//0 2
//0 3
//1 2
//1 3
//跳转到标签结束循环
//0 2
}

continue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import "fmt"

func main() {

OutLoop:
for i := 0; i < 2; i++ {
for j := 0; j < 5; j++ {
switch j {
case 2:
fmt.Println(i, j)
// 跳转到OutLoop标签处,执行下一次循环
continue OutLoop
}
}
}
//0 2
//1 2
}

goto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import "fmt"

func main() {

for x := 0; x < 10; x++ {

for y := 0; y < 10; y++ {

if y == 2 {
// 跳转到标签
goto breakHere
}

}
}

// 手动返回, 避免执行进入标签
return

// 标签
breakHere:
fmt.Println("done")

//done
}