循环结构

在上节,我们学习了选择结构,有两种方法实现:

  • If语句

  • Switch语句

today,我们接触一种全新的程序结构——循环结构,它能让代码更加有趣儿~

so,什么是循环结构?当某个条件成立时,周而复始地做某些事

比如:

人的一生如果还活着(条件),就应该不断学习(某些事)

只有一种循环

学过别的编程语言的盆友,估计已经知道,有三种循环:

  • For循环

  • While循环

  • Do-While循环

但是在Golang中,只有一种循环——For循环

像"二八定律",20%的事物占了80%的重要性。Golang的设计遵循着"Less is More"(以少为多)的哲学思想

For循环语句

For循环的完整格式如下:

有4个部份:

  • init part(初始化部份),只在第一次循环开始前执行一次(有局部变量作用域)

  • condition part(条件判断部份),在每次循环开始前,判断一次,如果为true则继续下一轮循环,否则退出循环

  • post part(变量变化部份),在每次循环结束后,执行一次

  • 花括号内的for循环代码块,在条件成立时,被执行一次

理解代码最容易的方式当然是"Show me the demo":

流程是这样的:

i := 00 < 3truefmt.Println(i)i++i += 1i = i + 11 < 3truefmt.Println(i)i++2 < 3truefmt.Println(i)i++3 < 3false

在Golang中,前面的init/condition/post part三个部份都是可选的

省略init part

我们把初始化变量的部份放到For循环外:

注意第一个分号不能省略

同样的,在init part声明的变量依然只在For循环内有效:

省略post part

我们把变量自增的部份放到For代码块的最后一行:

注意最后一个分号不能省略

省略init/post part

当init/post part都省略,只剩下condition part的时候,就跟While循环一模一样:

这时,两个分号都可以去掉,效果是一样的:

简洁多了~

最简洁的无限循环

无限循环,又称为死循环。也就是For循环的条件永远成立:

其实当省略掉condition part时,条件默认为true,所以上面等价于:

Ctrl + C
time.Sleep(time.Second)
循环中的Break语句

在Switch语句一节中,已经接触过Break语句,它用于提前结束Switch语句。

事实上,Break语句可用于三种语句内,分别是:

  • Switch语句

  • For语句

  • Select语句(先无视,涉及到通道的知识,也是一种选择结构)

Break语句作用都是用于提前结束上面三个语句

i==1
Continue语句

Continue语句用于跳过当前循环,遇上continue后的代码不会被执行

i==1

* 注意区分continue与break的不同:

总结