Skip to content

控制结构

分支

code

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")
}

循环

code

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 取出的指针地址为原指针地址的拷贝