您可能学过别的编程语言,并知道绝大多数语言的循环有for、while、do while三种
但是在Go语言中,只有一种循环,就是for循环
与if语句相同,Go语言的for循环与C语言也有如下区别:
(){}package main
import "fmt"
func main(){
for i:=0;i<10;i++{
fmt.Println("你好帅/美")
}
// 同样地,前置语句中声明的变量作用域也仅限于for内
// 下面语句会报错 undefined: i
// fmt.Println(i)
}
跟C语言一样,可以令for循环的前置或后置语句为空,只添加条件
var i, sum = 1, 0
for sum<10{
sum+=i
}
fmt.Println(sum) // 10
死循环
for true
// 下面与for true{}等价
for{
fmt.Println("你怎么这么好看?")
}
break跳出循环
如果我们不想一直死循环下去,当某个条件成立时退出循环,可以使用break语句
import "fmt"
i:=0
for{
fmt.Println("你怎么这么好看?")
i+=1
if i==3{
fmt.Println("天生的")
break
}
}
/*
你怎么这么好看?
你怎么这么好看?
你怎么这么好看?
天生的
*/
continue跳过当前循环
与break退出整个循环不同,continue是跳过当前循环,也就是说在for代码块中遇到continue,其后的所有语句将被跳过
for i:=1;i<=3;i++{
if i==2{
// 不妨将continue换成break试试,看看它们的区别
continue
}
fmt.Println(i)
}
/*
continue结果 break结果
1 1
3
*/
goto转移语句
Go 语言的 goto 语句可以无条件地转移到过程中指定的行
goto 语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能
但是,在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难
它的格式如下:
goto label; .. . label: statement;
例子
package main
import "fmt"
func main(){
i:=0
test: fmt.Println("当前i的值为", i)
for i<3{
i++
if i==2{goto test}
fmt.Println(i)
}
fmt.Println("结束")
}
/*
当前i的值为 0
1
当前i的值为 2
3
结束
*/
总结
条件与循环进行碰撞交融,将会使程序更加有意思