Go语言循环语句

for循环

类比C语言三种常用的循环,for循环也可以分为三类。

  1. 和C语言的for一样,以永真形式存在,存在格式:
    for { }
    

    也是for(;;)的形式

  2. 和C语言的while一样,存在格式:

    for condition{}

    类比while循环格式

  3. 和C语言的for一样,存在格式:

    for init; condition; post { }
    

int:一般为赋值表达式,给控制变量赋初值 。

condition:关系表达式或逻辑表达式,循环控制条件。

post:一般为赋值表达式,给控制变量增量或减量。

例:计算1~10之和

package main

import "fmt"

func main() {
	sum := 0
	for i := 0; i <= 10; i++ {
		sum += i
	}
	fmt.Println(sum)
}

输出结果为55。

和C语言中for类似,int和post可以进行省略,写成for ;condition; 的形式。for还有一种range格式,之后再细说。

循环嵌套的形成和C语言大差不差,不再细说了。

break语句

  • 用于循环语句中跳出循环,并开始执行循环之后的语句。
  • break 在 switch 语句中在执行一条 case 后跳出语句的作用。
  • break 可应用在 select 语句中。
  • 在多重循环中,可以用标号 label 标出想 break 的循环。

例:

package main

import "fmt"

func main() {
	sum := 0
	for {
		sum += 1
		fmt.Println(sum)
		if sum == 20 {
			break
		}
	}
	fmt.Println(sum)
}

输出结果展示:

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

注意:break用来跳出循环的时候只能跳出当前所在层的循环体,不能跳出上一层的循环体。

关于标号label,其实只是用来让输出更加明了的,让你能够判断出哪里跳出了循环。

例:

package main

import "fmt"

func main() {

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

	// 使用标记
	fmt.Println("---- break 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)
			break re
		}
	}
}

输出展示:

---- break ----
i: 1
i2: 11
i: 2
i2: 11
i: 3
i2: 11
---- break label ----
i: 1
i2: 11

continue语句

continue的作用是从这个位置开始,不再继续执行下面的指令,直接进入下一次循环,这次循环到此为止。依旧可以用标号label标出位置。

例:

package main

import "fmt"

func main() {
	/* 定义局部变量 */
	var a int = 10

	/* for 循环 */
	for a < 20 {
		if a == 15 {
			/* 跳过此次循环 */
			a = a + 1
			continue
		}
		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语句

无条件地转移到过程中指定的行,通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。但是,在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难,这是和C语言一样的。

goto跳转需要标记,所以使用该语句要注意标记设置和位置。

例:在变量 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值