您可能学过别的编程语言,并知道绝大多数语言的循环有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 结束 */总结
条件与循环进行碰撞交融,将会使程序更加有意思