我们使用循环来重复执行某些代码,减少重复的代码。Go提倡简洁,for
循环是唯一的循环结构。
我们在从echo开始的章节提到了for循环
语法,现在再温习一下:
-
初始化语句:在循环开始时执行一次的语句(通常用来初始化变量)。
-
条件表达式:在每次迭代前计算,若为 true
则继续执行循环体,否则退出循环。
-
后置语句:每次循环结束后执行的语句(通常用来更新变量)。
举个例子,我们打印 0-9
会输出
执行顺序是这样的:
我们注意到,for循环
初始化语句必须使用短声明语句:=
, 而不能使用var
声明。
for
循环三个语句到可以缺省,例如,我们缺省后置语句i++
运行结果是一样的。
- 我们可以缺省初始化语句
i := 0
运行结果还是一样。
- 如果我们缺省条件控制语句
i < 10
, 就会变成无限循环,这会耗尽你的 cpu 资源,不要轻易尝试
- break 语句
我们可以使用break
跳出当前的 for 循环
运行结果是一样的。
if 语句会判断 i 是否大于等于 10,如果大于等于 10, 就会执行break
语句,就终止循环。
- continue 语句
break
的异性兄弟是continue
, continue 会终止本次迭代,直接进行下一个迭代。for
只会开启一个循环,一个循环由多个迭代组成,循环体每执行一次就叫一个迭代。
例如我们想跳过 5,
输出
在 i
= 5 时,if 语句被通过,continue
执行,下面打印的代码就会被跳过,直接进行下一次迭代(i = 6
)
for range
循环是一种用于遍历数组、切片、字符串、map和通道的简便方式。它能够让你轻松地访问集合中的每个元素及其索引。
也可以这样打印0-9
输出
循环从0开始,到10-1=9
结束。
输出
不用担心索引越界的问题。
也可以缺省值,只遍历索引:
输出
数组的遍历和切片一样。
输出:
字符串有些特殊,会按照utf-8
编码来遍历字符串。试试将str
的值改为中文字符。
字符串遍历也可以和切片一样缺省值(s), 只遍历索引。
输出
k
存储键,v
存储值。
也可以缺省值,只遍历键:
输出