一、if else for

if

写在 if 里面,则是局部变量:

package main

import (
    "fmt"
)

func main() {
    if age := 34; age > 20 {
        fmt.Println("成年人", age)
    }
    fmt.Println(age)  // 这行没有输出,会报错
}

写在 if 外面,则是全局变量:

package main

import (
    "fmt"
)

func main() {
    age := 34
    if age > 20 {
        fmt.Println("成年人", age)
    }
    fmt.Println(age)
}

输出:

成年人 34
34

细节

  • if {} 括号不能省略
  • { 必须紧挨着条件,不能换行

for

初始化值可以写在 for 外面,但是循环里第一个 ; 还是必须写,否则报错。

package main

import (
    "fmt"
)

func main() {
    i := 1
    for ; i < 10; i++ {
        fmt.Println(i)
    }
}

for range:切片

swich case

条件判断。初始化赋值也可以写在 switch 里面,但是要加 ;

Golang 中 switch case 可以不写 break。多个 case 值用 , 隔开。

分支使用表达式,此时 switch 语句后面不需要再写判断变量。如果写了判断变量,则会报错。

package main

import (
    "fmt"
)

func main() {
    var age = 30
    switch {
    case age < 24:
        fmt.Println("好好学习")
    case age >= 24 && age <= 60:
        fmt.Println("好好赚钱")
    case age > 60:
        fmt.Println("注意身体")
    default:
        fmt.Println("输入错误")
    }
}

Golang 穿透

fallthrough 可以执行满足 case 条件的下一个 case,只穿透紧挨着的 case 一次。

package main

import (
    "fmt"
)

func main() {
    var age = 30
    switch {
    case age < 24:
        fmt.Println("好好学习")
    case age >= 24 && age <= 60:
        fmt.Println("好好赚钱")
        fallthrough
    case age > 60:
        fmt.Println("注意身体")
    default:
        fmt.Println("输入错误")
    }
}

输出:

好好赚钱
注意身体

二、continue break goto

在多重循环中,可以用标号 label 标出想 break 的循环。

continue 仅限在 for 循环内使用,只跳出当前循环。

goto 跳转到指定标签。

package main

import (
    "fmt"
)

func main() {
    var n = 30
    if n > 24 {
        fmt.Println("成年人")
        goto label3
    }

    fmt.Println("a")
    fmt.Println("b")
label3:
    fmt.Println("c")
}

输出:

成年人
c

三、参考教程

Golang 教程 P13-16