判断语句
if
中断式(卫语句)
var a int = 10 if a > 5 { fmt.Println("a大于5") return }switch
和 js 差不多
switch a { case 1: fmt.Println("a等于1") case 2: fmt.Println("a等于2") default: fmt.Println("a不等于1和2") }满足其中一个条件就不会继续判断了
如果要继续往下走,使用fallthrough关键字
b := 23 switch { case b <= 10: fmt.Println("b小于等于10") case b > 10: fmt.Println("b大于10小于等于20") fallthrough case b > 20: fmt.Println("b大于20小于等于30") default: fmt.Println("b大于20") }逻辑符
- &&
- ||
- !
// 逻辑符 if a > 5 && a < 10 { fmt.Println("a大于5小于10") } if a > 5 || a < 10 { fmt.Println("a大于5小于10") }逻辑短路
&&第一个条件如果是 false,后面的条件就不会走了
||第一个条件如果是 true,后面的条件就不会走了
循环语句
for
传统版本
也和 js 差不多
var sum int for i := 1; i <= 100; i++ { sum += i } fmt.Println(sum)两种死循环
for { fmt.Println(time.Now()) time.Sleep(2 * time.Second) }for true { fmt.Println(time.Now()) time.Sleep(2 * time.Second) }Go 没有 while 关键字
可以通过 for 变化而来
var sum int var i int = 1 for i <= 100 { sum += i i++ }do-while 模式
for { sum += i i++ if i == 101 { break }}遍历切片
传统方式
var nameList []string = []string{"张三", "李四", "王五"}// 传统方式for i := 0; i < len(nameList); i++ { fmt.Println(nameList[i])}Go 方式,和 py 类似
for index, item := range nameList { fmt.Println(index, item) }0 张三1 李四2 王五遍历 map
var nameMap = map[string]string{"name1": "张三", "name2": "李四"}for key, value := range nameMap { fmt.Println(key, value)}name1 张三name2 李四练习
九九乘法表
for i := 1; i <= 9; i++ { for j := 1; j <= i; j++ { fmt.Printf("%d*%d=%d\t", i, j, i*j) } fmt.Println() }break 和 continue
和 py 类似,continue 跳出本次循环,break 跳出循环
for i := 1; i <= 10; i++ { if i%2 == 0 { continue } fmt.Println(i) }13579 for i := 1; i <= 10; i++ { if i%2 == 0 { break } fmt.Println(i) }1


