目录
流程图
1、循环控制语句
2、无限循环——死循环
3、for循环
类似于while
1-10的和
0-100的偶数和
4、for循环的range格式
例一
例一(扩)
5、循环嵌套
99乘法表
2-100的素数
6、break语句
流程图
示例
break的标记使用
7、continue语句
流程图
示例
continue中的标签使用
8、goto语句
流程图
示例
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。
循环类型 | 描述 |
---|---|
for 循环 | 重复执行语句块 |
循环嵌套 | 在for循环中嵌套一个或多个for循环 |
循环控制语句可以控制循环体内语句的执行过程。
以下几种循环控制语句:
控制语句 | 描述 |
---|---|
break 语句 | 经常用于中断当前 for 循环或跳出 switch 语句 |
continue 语句 | 跳过当前循环的剩余语句,然后继续进行下一轮循环。 |
goto 语句 | 将控制转移到被标记的语句。 |
如果循环中条件语句永远不为false则会进行无限循环,可以通过 for循环语句中只设置一个条件表达式来执行无限循环
package main
import (
"fmt"
"time"
)
//无限循环——死循环
func main() {
var i = 0
//for后面的表达式如果不写,默认为true
for true {
fmt.Printf("%d\n", i)
i++
time.Sleep(time.Second) //休眠
}
}
##
0
1
2
...
for 循环是一个循环控制结构,可以执行指定次数的循环
//Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号
//和 C 语言的 for 一样:
for init; condition; post { }
//和 C 的 while 一样:
for condition { }
//和 C 的 for(;;) 一样:
for { }
init: 一般为赋值表达式,给控制变量赋初值
condition: 关系表达式或逻辑表达式,循环控制条件
post:一般为赋值表达式,给控制变量增量或减量。
package main
import "fmt"
//类似while做条件循环
func main() {
var doing string = "yes"
i := 1
for doing == "yes" {
fmt.Printf("循环yes第%d次\n", i)
i++
//当输出5句时停止输出
if i >= 6 {
doing = "no"
}
}
}
##
循环yes第1次
循环yes第2次
循环yes第3次
循环yes第4次
循环yes第5次
package main
import "fmt"
//1-10的和
func main() {
var sum = 0
for i := 0; i <= 10; i++ {
sum = sum + i
}
fmt.Println("1-10偶数和为", sum)
}
##
1-10偶数和为 55
package main
import "fmt"
//0-100的偶数和
func main() {
var sum = 0
for i := 0; i <= 100; {
sum = sum + i
i = i + 2
}
fmt.Println("1-100偶数和为", sum)
}
##
1-100偶数和为 2550
可以对slice切片,map,数组,字符串等进行迭代循环
for key, value := range oldMap {
newMap[ key ] = value
}
package main
import "fmt"
//range使用
func main() {
numbers := []int{10, 20, 30, 40, 50}
for a, b := range numbers {
fmt.Print("key:", a, "\t", "value:", b, "\n")
}
}
##
key:0 value:10
key:1 value:20
key:2 value:30
key:3 value:40
key:4 value:50
package main
import "fmt"
//range使用
func main() {
numbers := []int{10, 20, 30, 40, 50}
for _, b := range numbers {
fmt.Print("value:", b, "\n")
}
}
##
value:10
value:20
value:30
value:40
value:50
若numbers := [8]int{10, 20, 30, 40, 50},当数组的长度固定时,后面的值都为0
package main
import "fmt"
//99乘法表
func main() {
for i := 1; i <= 9; i++ {
for j := 1; j <= i; j++ {
fmt.Print(j, "x", i, "=", j*i, "\t")
}
fmt.Print("\n")
}
}
##
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
package main
import "fmt"
//2-100的素数
func main() {
fmt.Print("2\t")
for i := 3; i <= 100; i += 2 {
a := 0
for j := 2; j <= i/2; j++ {
if i%j == 0 {
a++
break
}
}
if a == 0 {
fmt.Print(i, "\t")
}
}
}
//2-100的素数
func main() {
for i := 2; i <= 100; i++ {
for j := 2; j <= i; j++ {
if i == j {
fmt.Print(i, "\t")
}
if i%j == 0 {
break
}
}
}
}
##
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
break语句用于以下两方面:
用于循环语句中跳出循环,并开始执行循环之后的语句。
break在switch(开关语句)中在执行一条case后跳出语句的作用。
在多重循环中,可以用标号label标出想break的循环。
package main
import "fmt"
func main() {
var a int = 10
for a < 20 {
fmt.Printf("a的值为%d ", a)
a++
if a > 15 {
break
}
fmt.Println("1")
}
fmt.Println("2")
}
##
a的值为10 1
a的值为11 1
a的值为12 1
a的值为13 1
a的值为14 1
a的值为15 2
//break的标记使用
func main() {
abc:
for i := 1; i < 5; i++ {
fmt.Println("外层: ", i)
for j := 10; j < 20; j++ {
fmt.Println("内层: ", j)
if j > 15 {
break abc //abc当j=16时,会回到i=1
}
}
}
}
##
外层: 1
内层: 10
内层: 11
内层: 12
内层: 13
内层: 14
内层: 15
内层: 16
continue不是跳出循环,而是跳过当前循环执行下一次循环语句。
for循环中,执行continue语句会触发for增量语句的热行。
在多重循环中,可以用标号label标出想continue的循环。
package main
import "fmt"
//continue结束本次循环,直接进入下一次循环
func main() {
var num = 10
for num < 20 {
if num == 15 {
num++
continue
}
fmt.Println(num)
num++
}
}
##
10
11
12
13
14
16
17
18
19
package main
import "fmt"
//标记
//break的标记使用
func main() {
abc:
for i := 1; i < 5; i++ {
fmt.Println("外层: ", i)
for j := 10; j < 20; j++ {
fmt.Println("内层: ", j)
if j > 15 {
continue abc //abc当j=16时,会回到i=1
}
}
}
fmt.Println("外层循环结束")
}
goto语句可以无条件地转移到过程中指定的行
goto语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。
package main
import "fmt"
func main() {
i := 0
fmt.Println(i)
i++
if i == 5 {
goto HERE
}
fmt.Println("语句1")
fmt.Println("语句2")
fmt.Println("语句3")
HERE:
fmt.Println("语句4")
}
##
0
语句1
语句2
语句3
语句4