不同的语言在流程控制方面大同小异,基本上都是 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") }