在“learn eTutorials”之前的Golang教程中,你学习了Go编程语言的基础知识。我们讨论了Golang的基础知识,例如数据类型、变量、常量,它们都是编写高效代码的一部分。在本教程中,你将了解如何使用控制流语句(如if/else、switch)和循环语句(如for、range等)在Golang程序中进行决策。此外,我们还将讨论决策语句的语法和流程图。

程序是一段代码,在执行时,控制流从一行代码顺序流向另一行代码。这是程序在未指定控制流时的正常执行情况。在特定程序中,会提到控制流,解释器会根据一些条件语句执行程序。因此,控制流可以定义为程序中代码行执行的顺序。Golang中的控制流语句进一步分为决策语句和循环语句。
在本教程的下一部分中,你将学习不同的决策语句,如只有if、if-else、else-if和嵌套if等……

Go条件支持比较运算符和逻辑运算符。
| 比较运算符 | 符号 | 逻辑运算符 | 符号 | |
|---|---|---|---|---|
| 小于 | < | 逻辑与 | && | |
| 小于或等于 | <= | 逻辑或 | || | |
| 大于 | > | 逻辑非 | ! | |
| 大于或等于 | >= | |||
| 等于 | == | |||
| 不等于 | != | |||
| 小于 | < |
If condition {
//perform some instruction
}

package main
import ("fmt")
func main() {
if 19 > 14 {
fmt.Println("29 is greater than 14")
}
}
输出
29 is greater than 14
另一个示例展示了if语句中的多个语句或条件。在给定示例中,a被赋值为45,使用&&(逻辑与)运算符与两个数字进行比较。
package main
import "fmt"
func main() {
a := 45
// mutiple conditions in if statement
if a > 14 && a < 49 {
fmt.Println("a satisfies the multiple if condition return true")
}
}
输出
a satisfies the multiple if condition return true
if condition {
//do some instructions
}else {
//do some instructions
注意:如果else关键字不在前一个块的右大括号后的同一行,则会显示编译器错误。
if-else语句的流程图

package main
import "fmt"
func main() {
NUM1 := 15
NUM2:= 27
if NUM1 > NUM2 {
fmt.Println(" NUM1 is greater than NUM2")
} else {
fmt.Println("NUM2 is greater than NUM1")
}
}
输出
NUM2 is greater than NUM1e
if-else if阶梯的语法如下所示
If condition1 {
//do some instructions
}else if condition2 {
//do some instructions
}else {
do some instructions
}
下面是一个使用if-else if阶梯的示例,它根据产品成本将其归类为“低成本”、“可行”或“昂贵”。
package main
import "fmt"
func main() {
cost := 1000
if cost < 250{
fmt.Println("low cost")
} else if cost>= 250 && cost < 400 {
fmt.Println("feasible")
} else {
fmt.Println("Expensive")
}
}
输出
Expensive
if-else if阶梯语句的流程图

包含在大括号内的另一个if语句的if语句构成了嵌套if语句。
if condition1 {
// instruction gets executed if condition1 is satisfied
if condition2{
// instruction gets executed if both condition1 and condition2 are satisfied
}
}else {
//some other instructions
}
嵌套if的流程图

package main
import ("fmt")
func main() {
num1 := 35
if num1 >= 35 {
fmt.Println("Num1 >= 35.")
if num1 > 25 {
fmt.Println("Num1 > 25.")
}
} else {
fmt.Println("Num1 < 35.")
}
}
输出
Num1 >= 35. Num1 > 25.
可以在if条件之前使用简写符号声明语句,如下面的语法所示。语句后跟要满足的条件,该条件进一步包含要执行的指令。如果条件为真,则在花括号内给出要执行的指令。
语法
If statement;condition {
}
让我们通过一个例子来理解
package main
import "fmt"
func main() {
if j := 6; j > 5 {
fmt.Println("j > 5")
}
}
输出
j > 5
注意:不能在语句中使用var关键字代替简写符号。
Golang支持switch语句,与任何其他编程语言一样。switch语句相对于其他控制语句(链接到控制语句)的优势是防止程序中出现多个if语句。
让我们从Golang中的基本switch语句开始
语法
switch statement; expression {
case expression1:
//Do some instructions
case expression2:
// Do some instructions
default:
// Do some instructions
}
上述语法中的switch关键字定义了该语句遵循一个switch条件。switch关键字后跟一个switch表达式。switch表达式需要通过与大括号内提供的不同对应case进行匹配来评估。该语法还可以用下面给出的其他形式表示。在上述语法中,switch语句和表达式写在同一行,这是可选的。它们也可以根据程序员的意愿单独声明。
让我们看看另一个switch语法
//SYNTAX 1
Switch statement ;{ // only with switch statement
case 1:
case 2:
default:
}
//SYNTAX 2
Switch expression // only with switch expression
case 1:
case 2:
default:
}
//SYNTAX 3
Switch { // only with switch keyword
case 1:
case 2:
default:
}

让我们通过示例理解一个基本的switch
package main
import ("fmt")
func main() {
months := 4
switch months {
case 1:
fmt.Println("january")
case 2:
fmt.Println("february")
case 3:
fmt.Println("march")
case 4:
fmt.Println("april")
case 5:
fmt.Println("may")
case 6:
fmt.Println("june")
case 7:
fmt.Println("july")
}
}
输出
april
在前面的示例中,switch表达式评估case 4,因为months(switch表达式)初始化为4。因此,在与case 4匹配之前,它会与其他case进行比较。如果没有找到匹配的case,它会切换到默认类型。
让我们讨论下面的示例,了解在切换时如何使用默认类型。
检查switch中默认类型工作的程序
package main
import ("fmt")
func main() {
months := 12//switch expression to evaluate
switch months {
case 1:
fmt.Println("january")
case 2:
fmt.Println("february")
case 3:
fmt.Println("march")
case 4:
fmt.Println("april")
case 5:
fmt.Println("may")
case 6:
fmt.Println("june")
case 7:
fmt.Println("july")
default:
fmt.Println("no months defined")
}
}
输出
no months defined
在上面的示例中,months: = 12未被评估,未找到与给定任何case的匹配,因此打印默认语句。
package main
import ("fmt")
func main() {
switch months := 6;months {
case 1:
fmt.Println("january")
case 2:
fmt.Println("february")
case 3:
fmt.Println("march")
case 4:
fmt.Println("april")
case 5:
fmt.Println("may")
case 6:
fmt.Println("june")
case 7:
fmt.Println("july")
default:
fmt.Println("no months defined")
}
}
输出
june
switch语句中不同case可以有多个值。switch case提供了多个值,用于评估给定的语句。
让我们通过一个例子来理解
package main
import ("fmt")
func main() {
// multiple switch cases
switch months := 7;months {
case 1,2,3:
fmt.Println("holiday")
case 4,5:
fmt.Println("working day")
case 6,7,8:
fmt.Println("weekend")
default:
fmt.Println("invalid case")
}
}
输出
weekend
到目前为止,我们讨论了不同的控制流语句,在下一个教程中,你将学习如何在Golang中实现循环。