不同的语言在流程控制方面大同小异,基本上都是 if-else, while, for 还有一些其他循环方式。
【if-els】
value := true
if value {
fmt.Println("true")
} else {
fmt.Println("false")
}
看起来除了没有括号限制,其他基本一样。Go语言的if还提供了可选语句部分:
if value := true; value {
fmt.Println("true")
} else {
fmt.Println("false")
}
在执行判断之前先运行,value := true这一句,需要注意的是,这时候value只作用于if-else语句中。
这里有一点很奇怪,Go语言的 { 不能单独一行,以及 } else { 必须在同一行,非常奇怪(后来上网查了一下,这是Go语言强制规定的)。
【for循环】
for i := 1; i <= 10; i++ {
fmt.Printf("i = %d
", i)
}
和C语言差不多,也没啥好说的。这里的for循环有一个特殊的用法可以实现无限循环:
for {
}
【break】
一样
【continue】
一样
【switch】
value := 2
switch value {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
case 3:
fmt.Println("3")
case 4:
fmt.Println("4")
case 5:
fmt.Println("5")
}
和其他语言也差不多,和if-else一样也没有括号,Go语言的switch自带break,所以不需要每一个case后面带一个break,如果不需要break需要程序继续运行则需要使用fallthrough。
多个表达式匹配,switch支持一个case多个值,而且支持字符串匹配(太爽了)
value := "2"
switch value {
case "1", "2", "3", "4":
fmt.Println("1-4")
case "5":
fmt.Println("5")
}