(3-3)流程控制语句:循环控制语句

3.3  循环控制语句

为了使程序能够更轻松、更有弹性地达到预期目标,Go语言提供了循环控制语句,用于更改程序的正常执行顺序,当执行离开范围时,在该范围内创建的所有自动对象都将被销毁。Go语言提供了两种循环控制语句:break、continue和goto,在本节的内容中,将详细讲解这三种语句的用法。

3.3.1  break 语句

在Go语言中,break语句有以下三种用法:

(1)用于循环语句中跳出循环,并开始执行循环之后的语句。

(2)在 switch中在执行一条 case后跳出当前语句。

(3)在多重循环中,可以用标号label标出想停止的循环。

实例3-8:模拟田径比赛(源码路径:Go-codes\3\stop.go)

实例文件stop.go的具体实现代码如下所示。

package main
import "fmt"
func main() {
  var a int = 1
  for a < 25 {		//for 循环
   fmt.Printf("正在跑第 %d圈\n", a);
   a++;
   if a == 5 {
   	  break;		//使用 break 语句跳出循环
   }
 }
 fmt.Printf("身体不适,我决定退出比赛!");
}

在上述代码中,首先设置只要变量a小于25就执行for循环,并且设置如果a等于5则使用break语句停止循环。执行后会输出:

正在跑第 1圈
正在跑第 2圈
正在跑第 3圈
正在跑第 4圈
身体不适,我决定退出比赛!

身体不适,我决定退出比赛!

Go语言中 break 语句除了可以结束 for、switch 和 select 的代码块外,还可以在语句后面添加标签,表示退出某个标签对应的代码块,对标签的要求是必须定义在对应的for、switch和select的代码块上。例如下面的代码:

package main
import "fmt"
func main() {
OuterLoop:
    for i := 0; i < 2; i++ {
        for j := 0; j < 5; j++ {
            switch j {
            case 2:
                fmt.Println(i, j)
                break OuterLoop
            case 3:
                fmt.Println(i, j)
                break OuterLoop
            }
        }
    }
}

执行后会输出:

0 2

对上述代码的具体说明如下:

  1. 第4行,外层循环的标签。
  2. 第5行和第6行,嵌套循环。
  3. 第7行,使用 switch 进行数值分支判断。
  4. 第10和第13行,退出OuterLoop对应的循环之外,也就是跳转到最后一行。

3.3.2  使用continue语句

在Go语言中,continue 语句和break语句类似,但是 continue 不是跳出循环,而是跳过当前这一次循环,即跳过循环体中当前执行的这次循环,然后接着进行下一次是否执行循环的判定。在多重循环中,可以用标号 label 标出想 continue 的循环。continue语句的执行流程如图3-5所示。

图3-5  continue语句的执行流程

实例3-9:使用标号和不使用标号的区别(源码路径:Go-codes\3\compare.go)

实例文件compare.go的具体实现代码如下所示。

package main
import "fmt"
func main() {
	// 不使用标记
	fmt.Println("---- continue ---- ")
	for i := 1; i <= 3; i++ {
		fmt.Printf("i: %d\n", i)
		for i2 := 11; i2 <= 13; i2++ {
			fmt.Printf("i2: %d\n", i2)
			continue
		}
	}

	// 使用标记
	fmt.Println("---- continue label ----")
re:
	for i := 1; i <= 3; i++ {
		fmt.Printf("i: %d\n", i)
		for i2 := 11; i2 <= 13; i2++ {
			fmt.Printf("i2: %d\n", i2)
			continue re
		}
	}
}

在上述两段代码中都是在嵌套for循环中使用了continue语句,其中在第二段代码中用到了标号。执行后会输出:

---- continue ---- 
i: 1
i2: 11
i2: 12
i2: 13
i: 2
i2: 11
i2: 12
i2: 13
i: 3
i2: 11
i2: 12
i2: 13
---- continue label ----
i: 1
i2: 11
i: 2
i2: 11
i: 3
i2: 11

3.3.3  使用goto 语句

在Go语言中,goto 语句可以无条件地转移到程序中指定的行。goto语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。使用goto语句的语法格式如下:

goto label;
..
.
label: statement;

在上述格式中,在遇到goto 语句时,程序会跳转执行label标签对应的“statement”代码。请看下面的代码,在变量a等于15的时候跳过本次循环并回到循环的开始语句LOOP处。

package main
import "fmt"
func main() {
   //定义局部变量
   var a int = 10

   /*/循环
   LOOP: for a < 20 {
      if a == 15 {
         /* 跳过迭代 */
         a = a + 1
         goto LOOP
      }
      fmt.Printf("a的值为 : %d\n", a)
      a++    
   }  
}

执行后会输出:

a的值为 : 10
a的值为 : 11
a的值为 : 12
a的值为 : 13
a的值为 : 14
a的值为 : 16
a的值为 : 17
a的值为 : 18
a的值为 : 19

注意:在程序设计中一般不建议使用 goto 语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python3 的流程控制语句主要有三种:条件语句循环语句和异常处理语句。 1. 条件语句: 条件语句用于判断某个条件是否为真,然后根据判断结果执行不同的操作。Python中的条件语句使用if、elif和else关键字来实现。其基本语法格式如下: ``` if condition1: statement1 elif condition2: statement2 else: statement3 ``` 其中,condition1、condition2是判断条件,statement1、statement2、statement3是执行的语句块。 2. 循环语句循环语句用于重复执行某段代码,Python中的循环语句有while和for两种。while循环会在指定条件为真时重复执行,而for循环则会遍历一个序列,依次执行其中的代码块。其基本语法格式如下: ``` # while循环 while condition: statement # for循环 for variable in sequence: statement ``` 其中,condition是循环条件,statement是执行的语句块,variable是for循环中的变量,sequence是需要遍历的序列。 3. 异常处理语句: 异常处理语句用于捕获和处理程序运行过程中可能出现的异常情况。Python中的异常处理语句使用try、except和finally关键字来实现。其基本语法格式如下: ``` try: statement1 except ExceptionType: statement2 finally: statement3 ``` 其中,statement1是可能会出现异常的代码块,ExceptionType是可能会出现的异常类型,statement2是出现异常时需要执行的代码块,statement3是无论是否出现异常都需要执行的代码块。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值