7. 流程控制

不同的语言在流程控制方面大同小异,基本上都是 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")
}
原文地址:https://www.cnblogs.com/hatsusakana/p/9811030.html