Golang中的流程控制关键字goto

goto语句通过标签进行代码间的无条件跳转goto语句可以在快速跳出循环、避免重复退出上有一定的帮助。

Golang中使用goto语句能简化一些代码的实现过程。例如双层嵌套的for循环要退出时。

Golang中的关键字goto实例

跳转到指定标签

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

import "fmt"

func goto_lab() {
i := 1
if i >= 2 {
fmt.Println("2")
} else {
goto END
}
END:
fmt.Println("END...")
}

func main() {
goto_lab()
}

运行结果

1
END...

跳出双重循环

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

import "fmt"

func goto_doublefor() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if i >= 2 && j >= 2 {
goto END
}
fmt.Printf("%v, %v\n", i, j)
}
}
END:
fmt.Println("END...")
}
func main() {
goto_doublefor()
}

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
0, 0
0, 1
0, 2
0, 3
0, 4
0, 5
0, 6
0, 7
0, 8
0, 9
1, 0
1, 1
1, 2
1, 3
1, 4
1, 5
1, 6
1, 7
1, 8
1, 9
2, 0
2, 1
END...

如果goto的地方使用break,则只会跳出里层循环,后面还会有3到9开头的结果继续输出。