控制结构
分支
if
- 基本形式
condition1 := false
condition2 := true
if condition1 {
// do something
fmt.Printf("condition1 %t", condition1)
} else if condition2 {
// do something else
fmt.Printf("condition2 %t", condition2)
} else {
// catch-all or default
fmt.Printf("else")
}
- if 的简短语句
- 同 for 一样, if 语句可以在条件表达式前执行一个简单的语句。
x := 99
if v := x - 100; v < 0 {
fmt.Printf("v: %d", v)
}
switch
var1 := 2
val1 := 1
val2 := 2
val3 := 3
switch var1 {
case val1: //空分支
fmt.Println("val1")
case val2:
fallthrough //执行case3中的f()
case val3:
f()
default: //默认分支
fmt.Println("default")
}
循环
for
Go 只有一种循环结构:for 循环。
- 计入计数器的循环
for 初始化语句; 条件语句; 修饰语句 {}
for i := 0; i < 10; i++ { sum += i }
// 初始化语句和后置语句是可选的,此场景与 while 等价(Go 语言不支持 while) for ; sum < 1000; { sum += sum }
- 无限循环
for {
if condition1 {
break
}
}
for-range
遍历数组,切片,字符串,Map 等
for index, char := range myString {
...
}
for key, value := range MyMap {
...
}
for index, value := range MyArray {
...
}
需要注意:如果 for range 遍历指针数组,则 value 取出的指针地址为原指针地址的拷贝