Go的最大特点之一是给你更少的选择。
我们有一个循环语句。for
我们像这样使用它:
for i := 0; i < 10; i++ {
fmt.Println(i)
}
我们首先初始化一个循环变量,然后设置我们为每个迭代检查的条件,以决定循环是否应该结束,最后在每个迭代结束时执行post语句,在本例中,它增加了i 。
i++ 递增 变量。i
< 运算符用于比较i 和数字10 ,并返回true 或false ,决定是否应该执行循环体。
我们不需要在这个块周围加上括号,这与其他语言如C或JavaScript不同。
其他语言提供了不同种类的循环结构,但Go只有这一种。我们可以模拟一个while 循环,如果你熟悉有这种循环的语言,就像这样:
i := 0
for i < 10 {
fmt.Println(i)
i++
}
我们也可以完全省略条件,在我们想要的时候使用break 来结束循环:
i := 0
for {
fmt.Println(i)
if i < 10 {
break
}
i++
}
我在循环体内部使用了一个if 语句,但我们还没有看到条件式!我们接下来会做。我们接下来会做这个。
现在我想介绍的一件事是range 。
我们可以使用for ,用这种语法来迭代一个数组:
numbers := []int{1, 2, 3}
for i, num := range numbers {
fmt.Printf("%d: %d\n", i, num)
}
//0: 1
//1: 2
//2: 3
注意:我使用了
fmt.Printf(),它允许我们使用动词%d(表示十进制整数)和\n(表示添加行结束符)将任何值打印到终端。
当你不需要使用索引时,使用这种语法很常见:
for _, num := range numbers {
//...
}
使用特殊的_ 字符,意思是 "忽略这个",以避免Go编译器引发错误,说 "你没有使用i 这个变量!"。