GO语言的循环语句

目录

流程图

1、循环控制语句

2、无限循环——死循环

3、for循环

类似于while

1-10的和

0-100的偶数和

4、for循环的range格式

例一

例一(扩)

5、循环嵌套

99乘法表

2-100的素数

6、break语句

流程图

 示例

break的标记使用

7、continue语句

流程图

 示例

continue中的标签使用

8、goto语句

流程图

示例​​​​​​​


在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。

流程图

GO语言的循环语句_第1张图片

循环类型 描述
for 循环 重复执行语句块
循环嵌套 在for循环中嵌套一个或多个for循环

1、循环控制语句

循环控制语句可以控制循环体内语句的执行过程。

以下几种循环控制语句:

控制语句 描述
break 语句 经常用于中断当前 for 循环或跳出 switch 语句
continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环
goto 语句 将控制转移到被标记的语句。

2、无限循环——死循环

如果循环中条件语句永远不为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
...

3、for循环

for 循环是一个循环控制结构,可以执行指定次数的循环

//Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号
//和 C 语言的 for 一样:
for init; condition; post { }


//和 C 的 while 一样:
for condition { }


//和 C 的 for(;;) 一样:
for { }

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

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

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

GO语言的循环语句_第2张图片

类似于while

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次

1-10的和

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

0-100的偶数和

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

4、for循环的range格式

可以对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

5、循环嵌套

99乘法表

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	

2-100的素数

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  

6、break语句

break语句用于以下两方面:

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

  • break在switch(开关语句)中在执行一条case后跳出语句的作用。

  • 在多重循环中,可以用标号label标出想break的循环。

流程图

GO语言的循环语句_第3张图片

 示例

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的标记使用

//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

7、continue语句

continue不是跳出循环,而是跳过当前循环执行下一次循环语句。

for循环中,执行continue语句会触发for增量语句的热行。

在多重循环中,可以用标号label标出想continue的循环。

流程图

GO语言的循环语句_第4张图片

 示例

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

continue中的标签使用

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("外层循环结束")
}

8、goto语句

goto语句可以无条件地转移到过程中指定的行

goto语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。

流程图

GO语言的循环语句_第5张图片

示例

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

你可能感兴趣的:(go,golang,开发语言,后端,运维)