Go语言跳转控制语句

1. break

break语句用于终止某个语句块的执行,用于中断当前for循环或跳出switch语句。

1
2
3
4
5
6
//基本语法
{
......
break
......
}

1.1 练习

随机生成1-100的一个数,直到生成了99这个数,看看你一共用了几次?

分析:编写一个无限循环的控制,然后不停的随机生成数,当生成了99时,就退出这个无限循环。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
func main() {
//为了生成一个随机数,还需要rand设置一个种子
//time.Now().Unix():返回一个从1970:01:01的0时0分0秒到现在的秒数
//rand.Seed(time.Now(),Unix())
//n :=rand.Intn(100) +1 //[0 100]
//fmt.Println(n)
//随机生成1-100的一个数,知道生成了99这个数,看你一共用了几次
//分析思路
//编写一个无限循环控制,然后不停的随机生成数,当生成了99时,就退出这个循环
var count int = 0
for {
rand.Seed(time.Now().UnixNano())
n := rand.Intn(100) + 1
fmt.Println("n=", n)
count++
if n == 99 {
break //表示跳出for循环
}
}
fmt.Println("生成99一共使用了", count)
}

//最终的结果
//生成99一共使用了 22

2. continue

continue语句用于结束本次循环,继续执行下一次的循环

continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这个和前面的break标签使用的规则一致

1
2
3
4
5
6
//基本语法
{
......
continue
......
}

2.1 continue案例

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
func main() {
//continue案例
for i := 0; i < 4; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
continue
}
fmt.Println("j=", j)
}
}
}

//带标签的
here:
for i := 0; i < 2; i++ {
for j := 1; j < 4; j++ {
if j == 2 {
continue here
}
fmt.Println("i=", i, "j=", j)
}
}
}

//运行结果
//i= 0 j= 1
//i= 1 j= 1

3. goto

Go语言的goto语句可以无条件地转移到程序中指定的行。

1
2
3
4
//基本语法
goto label
......
label: statement

image-20240514143717966

3.1 实例

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
package main

import "fmt"

func main() {
var n int = 30
//演示goto的使用
fmt.Println("ok1")
if n > 20 {
goto label1
}
fmt.Println("ok2")
fmt.Println("ok3")
fmt.Println("ok4")
label1:
fmt.Println("ok5")
fmt.Println("ok6")
fmt.Println("ok7")
}

//运行的结果
//ok1
//ok5
//ok6
//ok7

4. return

return使用在方法或者函数中,表示跳出所在的方法或者函数

  1. 如果return是在普通的函数,则表示跳出该函数,即不再执行函数中的return后面代码,也可以理解为终止函数。
  2. 如果return是在main函数,表示终止main函数,也就是终止程序

4.1 实例

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

import "fmt"

func main() {
var n int = 30
fmt.Println("ok1")
if n > 20 {
return //跳出程序
}
fmt.Println("ok2")
fmt.Println("ok3")
fmt.Println("ok4")
fmt.Println("ok5")
fmt.Println("ok6")
}
//最后的运行结果
//ok1

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!