条件 - if
基本语法
if a > b { // 条件表达式的圆括号可省略,写上也没错
} else if a > c {
} else {
}
定义局部变量
func main() {
x := 32
if i := 16; x > i { // 可以定义代码块局部变量
println(i)
}
println(i) // 报错: undefined: i
}
经测试,截止到go1.13.5
尚不支持三元操作符x > y ? x : y
分支 - switch
基本语法
switch i {
case 1:
print("A") // 省略break,写上也没错
case 2:
print("B")
fallthrough // 继续执行下一分支
case 3:
print("C")
fallthrough // fallthrough 后不能跟break,否则会报错:fallthrough statement out of place
break
case 4:
print("D")
break
fallthrough // 不报错,但也没有意义
case 5, 6: // 多条件匹配
print("E or F")
default:
print("X")
}
循环 - for
基本语法
for i := 0; i < 10; i++ {
print(i)
}
// 变形 I
i := 0
for ; i < 10; i++ { // 第一个分号不能省,否则报语法错误
print(i)
}
// 变形 II
for i := 0; ; i++ { // 第二个分号不能省,否则报语法错误
if i >= 10 {
break
}
print(i)
}
// 变形 III
for i := 0; i < 10; { // 第二个分号不能省,否则报语法错误
print(i)
i++
}
类while
用法
var i int = 0
for i < 10 {
print(i)
i++
}
迭代 - range
基本语法
for k, v := range s { // 注意:这里是 `:=`
println(k, v)
}
for k := range s { // 只取键
println(k)
}
for _, v := range s { // 只取值
println( v)
}
for range s { // 仅迭代,暂时还不明白有什么作用
}