5.5. 循环结构
循环概念
所谓的循环就是重复的做同一件事情,我们先从生活的角度来理解一下循环。
洗10颗白菜
罚抄单词100遍
爱你10万遍
基本语法结构
在GO语言中,我们有专门实现这种循环的结构就是for结构(GO语言中只有for循环结构,没有while,do-while结构),基本语法结构如下:
for 表达式1;表达式2;表达式3{
循环体
}
表达式1:定义一个循环的变量,记录循环的次数
表达式2:一般为循环条件,循环多少次
表达式3:一般为改变循环条件的代码,使循环条件终有一天不再成立
循环体:重复要做的事情。
列子,输出,1到10
for i := 1; i <= 10; i++ {
fmt.Println(i)
}
计算1-100偶数的和
在for语句中嵌套if条件判断
sum := 0
for i := 1; i <= 100; i++ {
if i%2 == 0 {
sum+=i
}
}
利用赋值算数符号,优化代码
sum := 0
for i := 0; i <= 100; i += 2 {
sum += i
}
跳转(出)语句
关于GO语句中的跳转语句,有break,continue,goto(与函数结合使用,后期讲解到函数在讲)
下面我们先来讲解break.
根据前面的案例,我们发现,循环必须指定循环条件,在满足循环条件的时候执行循环,如果不满足循环的条件,可以跳出整个循环。
但是如果,我们没有指定循环条件,那么循环就成了死循环
,所谓的死循环指的就是一直循环,跳不出来了。
死循环语法
怎样构建死循环呢?语法如下:
for {
fmt.Println('我爱你')
}
死循环(无限循环)的语法非常简单,就是什么循环条件也没有写。
break语句
break的作用就是跳出本次循环
func main() {
var i int = 0
//死循环 循环没有出口
for {
//在有些程序循环中 不知道程序执行次数 只有条件满足时程序停止
if i >= 5 {
//跳出语句跳出当前循环
break
}
fmt.Println(i)
i++
}
}
continue 语句
continue**的作用是:**立即结束本次循环,判断循环条件,如果成立,则进入下一次循环,否则退出循环.
func main() {
sum := 0
for i := 0; i <= 100; i++ {
if i%2 == 1 {
//结束本次循环 继续下次循环
//如果在程序中入到continue后剩余代码不会执行 会回到循环的位置
continue
}
sum += i
}
fmt.Println(sum)
}
特殊的FLAG 语句
如果在代码中入到 goto 会跳到所定义的标志位
可以在一个循环中跳到另外一个循环中 可以在一个函数中跳到另外一个函数中
例子
func main() {
goto FLAG
fmt.Println("hello world3")
fmt.Println("hello world4")
FLAG:
fmt.Println("hello world5")
fmt.Println("hello world6")
}
输出结果:
直接输出 5 6,跳出了 3 4.
死循环 goto 例子
func main() {
//死循环
FLAG:
fmt.Println("hello world1")
goto FLAG
fmt.Println("hello world2")
}
这里就无限goto了。。。