Go微服务实战
上QQ阅读APP看书,第一时间看更新

1.4 选择和循环

像所有的语言一样,Go语言也提供了关键字实现选择,比如,通过if else、switch语句来实现。

对于if语句,这里不再赘述,与其他语言基本一致。下面简单介绍一下switch语句。

switch语句的一般用法如下:


switch{
case n<0:
    fmt.Println("<0")
case n>0:
    fmt.Println(">0")
default:
    fmt.Println("=0")
}

上述代码中,无论满足哪个case条件,都不需要break,这与Java不同,但可以使用default语句,如代码中所示。

Go语言的循环只提供了for关键词,没有while等其他关键词,因为for完全可以替代while。这一点非常符合Go语言简洁的风格。

for循环是编程中最常见的循环,我们可以通过变量控制循环的次数,比如:


for i := 0;i<100;i++ {

}

循环一共会执行100次,当i达到100时循环结束。注意,i的作用域是这个for循环,我们可以在大括号内使用i。如果要在100次循环完成前结束循环,可以用break,如果仅仅是结束本次循环代码块内剩余的代码然后继续开始下一次循环,可以用continue,这些都与其他语言一样。

Go语言没有提供while关键词,那么我们如何用for来实现while的功能呢?有两种方式,一种是:


for {

}

即直接写for,就相当于while,如果需要结束循环,在for代码块内使用判断加break就可以。

如果要模仿do ... while,可以使用另一种方式:


for ok:=true;ok;ok=expression{

}

一旦expression返回的值为false,则循环结束。

这样,while可以做到的就完全可以使用for来替代了。

熟悉Python的读者都知道range函数非常好用,可以方便地遍历队列等对象。而在Go语言中,直接把range作为了关键字,当然在实现上与Python有所不同,for和range的结合使用在Go编程中是非常常见的。

下面针对本节的几个知识点给出示例代码。


book/chapter01/1.2/loop.go
1. package main
2.
3. import "fmt"
4.
5. func main() {
6.     for i:=0;i<10;i++{
7.         if i%2 == 0{
8.             continue
9.         }
10.         fmt.Print(i,"   ")
11.     }
12.     fmt.Println()
13.     i := 5
14.     for{
15.         if i<1 {
16.             break
17.         }
18.         fmt.Print(i,"   ")
19.         i--
20.     }
21.
22.     fmt.Println()
23.     arr := []int{1,2,3,4,5}
24.     for i,v := range arr{
25.         fmt.Println("index:",i,"value:",v)
26.     }
27. }

请读者结合前文的解释阅读代码,并且在自己的计算机上调试本程序。