go基础(5)循环语句

for 循环

循环的结构体:

for init; condition; post {

 }

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

condition: 关系表达式或逻辑表达式,循环控制条件(最大的循环次数啊之类的)

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

例 1 + 2 + 3 + 4 +.....+100

sum :=0

for i :=0; i <=100; i++ {

sum +=i

}

第二种for循环

for ; condition; {

 }

只要符合控制条件condition,就会一直执行

sum :=0

for ; sum <10; {

sum++

fmt.Println(sum)

}

第三种for循环

这种更加简洁了,如下:

for sum <=20 {

sum++

fmt.Println(sum)

}

/**  只要满足 sum小于20 sum就会一直自加 */


For-each range 循环

这种循环是用来对符串、数组、切片等的迭代

例:

var name ="龙猫这部电影真的很好看"

for i,s :=range name{

fmt.Println(i,string(s))

}

/** i对应下标 ,s迭代的值 */ 

嵌套循环

在 for 循环中嵌套一个或多个 for 循环

例 打印一个简易的九九乘法表:

for i :=1; i <=9; i++ {

for j :=1; j <= i; j++ {

fmt.Println(j, "*", i, "=", j*i)

}

}

循环控制语句

循环控制语句的作用是在循环体内 控制循环执行过程(跳出循环啊 之类的)

go 语言支持的循环控制语句有:

break语句:经常用于中断当前 for 循环或跳出 switch 语句

在for循环中:

a :=2

for a <20 {

a++

if a >12 {

break

  }

fmt.Println(a)

}

//在上面代码中a一直自加 当a自加到大于12的时候 就直接跳出整个循环 所以只会打印3到12的值

在switch语句中

a :=5

switch {

case a <10:

fmt.Println("a小于10")

fallthrough

case a >3:

fmt.Printf("a大于3")

default:

fmt.Printf("default")

}

上面代码 我们加了fallthrough 所以执行完 a <10里面的内容后 不管下面条件是否成立 还会继续执行下面一行代码,所以最后打印的是:a小于10,a大于3

当我们加上break时候:

a :=5

switch {

case a <10:

fmt.Println("a小于10")

if a <6 {

break

  }

fallthrough

case a >3:

fmt.Printf("a大于3")

default:

fmt.Printf("default")

}

//直接跳出了循环 不会再继续执行,最后输出的是:a小于10

continue 语句:跳过当前循环的剩余语句,然后继续进行下一轮循环(不是中断执行哟)

for循环:

for i :=1; i <5; i++ {

if i ==3 {

continue

  }

fmt.Println(i)

}

//上面代码 当执行到i为3的时候,直接就会跳出此次循环进行一次循环,所以最终的打印的值是 1,2,4

goto语句:将控制转移到被标记的语句

for循环:

for i :=1; i <5; i++ {

if i ==3 {

goto KEDAYA

}

fmt.Println(i)

}

KEDAYA:

fmt.Println("到3执行了goto跳转")

//当执行到i为3的时候,执行了goto转移,转移到label为KEDAYA的地方,最后输出结果为:1, 2, 到3执行了goto跳转

如果不清楚goto 跳转label可以看这儿go基础(5.1)go label 的用法 -

同样的continue (其实执行结果和直接使用continue 一样的,所有感觉continue后面接label优点多余)

KEDAYA:

for i :=1; i <5; i++ {

if i ==3 {

continue KEDAYA

}

fmt.Println(i)

}

//输出结果为1,2,4

break后面接label:

KEDAYA:

for i :=1; i <5; i++ {

if i ==3 {

break KEDAYA

}

fmt.Println(i)

}

//最后输出的结果为1,2

无限循环

如果循环中条件语句永远不为 false 则会进行无限循环(其实就是死循环),我们可以通过 for 循环语句中只设置一个条件表达式来执行无限循环:

for true {

fmt.Println("这个会循环到宇宙重启")

}

你可能感兴趣的:(go基础(5)循环语句)