四、流程控制

if

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func computedValue() int {
 8     return 8
 9 }
10 
11 func main() {
12     //if还有一个强大的地方就是条件判断语句里面允许声明一个变量,
13     //这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了,如下所示
14     // 计算获取值x,然后根据x返回的大小,判断是否大于10。
15     if x := computedValue(); x > 10 {
16         fmt.Println("x is greater than 10")
17     } else if x == 8 {
18         fmt.Println("x is 11")
19     } else {
20         fmt.Println("x is less than 10 and not 8")
21     }
22 }

结果:x is 11

goto

Go有goto语句——请明智地使用它。用goto跳转到必须在当前函数内定义的标签。例如假设这样一个循环:

1 func myFunc() {
2     i := 0
3 Here:   //这行的第一个词,以冒号结束作为标签
4     println(i)
5     i++
6     goto Here   //跳转到Here去
7 }

结果:1到无限

for

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     for index := 10; index > 0; index-- {
 7         if index == 5 {
 8             break // 或者continue
 9         }
10         fmt.Println(index)
11     }
12     // break打印出来10、9、8、7、6
13     // continue打印出来10、9、8、7、6、4、3、2、1
14 }

while的功能。

1 sum := 1
2 for sum < 1000 {
3     sum += sum
4 }

range

是个迭代器,它可以在slice,array,string,map和channel,从它循环的内容中返回一个键值对。

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     //创建一个字符串的slice
 7     List := []string{"a", "b", "c", "d", "e", "f"}
 8     for k, v := range List {
 9         //range将返回int类型的序号
10         fmt.Println("key:", k, "value:", v)
11     }
12     //也可以在字符串上直接使用range
13     for pos, char := range "a%x$" {
14         fmt.Printf("位置:%d 字符:%c\n", pos, char)
15     }
16 }

结果:

key: 0 value: a


key: 1 value: b


key: 2 value: c


key: 3 value: d


key: 4 value: e


key: 5 value: f


位置:0 字符:a


位置:1 字符:%


位置:2 字符:x


位置:3 字符:$

switch

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     //Go里面switch默认相当于每个case最后带有break
 7     i := 2
 8     switch i {
 9     case 1:
10         fmt.Println("i is equal to 1")
11     case 2, 3, 4:
12         fmt.Println("i is equal to 2, 3 or 4")
13         //使用fallthrough强制执行后面的case代码
14         fallthrough
15     case 10:
16         fmt.Println("i is equal to 10")
17     default:
18         fmt.Println("All I know is that i is an integer")
19     }
20 }
posted on 2013-01-30 21:12  liubiaoren  阅读(140)  评论(0)    收藏  举报