一、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