Go 语言条件语句
在 Go 语言中,条件语句用于根据给定条件执行不同的代码块。条件语句需要指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定代码块,并在条件为 false 的情况再执行另外的代码块。本节将介绍 Go 语言的几种条件语句,包括 if-else
语句、switch
语句、type-switch
语句,以及用于通信的 select
语句。
本文所有示例代码可在 GitHub 下载。
if 语句
if
语句由布尔表达式后紧跟一个或多个语句组成。Go 语言中 if
语句的语法如下:
if condition {
// 如果条件为真,执行这里的代码
}
if
在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则不执行。
请看下面实例:
package main
import "fmt"
func main() {
/* 定义局部变量 */
var a int = 10
/* 使用 if 语句判断布尔表达式 */
if a < 20 {
/* 如果条件为 true 则执行以下语句 */
fmt.Printf("a 小于 20\n")
}
fmt.Printf("a 的值为 %d\n", a)
}
以上代码执行结果为:
a 小于 20
a 的值为 10
if-else 语句
if
语句后可以使用可选的 else
语句,else
语句中的表达式在布尔表达式为 false 时执行。Go 语言中 if...else
语句的语法如下:
if condition {
// 如果条件为真,执行这里的代码
} else {
// 如果条件为假,执行这里的代码
}
if
在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则执行 else
语句块。
请看下面实例:
package main
import "fmt"
func main() {
/* 局部变量定义 */
var a int = 100
/* 判断布尔表达式 */
if a < 20 {
/* 如果条件为 true 则执行以下语句 */
fmt.Printf("a 小于 20\n")
} else {
/* 如果条件为 false 则执行以下语句 */
fmt.Printf("a 不小于 20\n")
}
fmt.Printf("a 的值为 %d\n", a)
}
以上代码执行结果为:
a 不小于 20
a 的值为 100
if-else if 语句
if
语句后面除了可以带 else
语句,还可以一个或多个 else if
语句,如果 else if
语句中的布尔表达式为 true 则执行该语句块。Go 语言中 if...else if
语句的语法如下:
if condition1 {
// 如果条件1为真,执 行这里的代码
}
else if condition2 {
// 如果条件2为真,执行这里的代码
} else {
// 如果上述条件均为假,执行这里的代码
}
请看下面实例:
package main
import "fmt"
func main() {
/* 局部变量定义 */
var a int = 50
/* 判断布尔表达式 */
if a < 20 {
fmt.Printf("a 小于 20\n")
} else if a < 40 {
fmt.Printf("a 大于等于 20,小于 40\n")
} else if a < 60 {
fmt.Printf("a 大于等于 40,小于 60\n")
} else {
fmt.Printf("a 不小于 60\n")
}
fmt.Printf("a 的值为 %d\n", a)
}
以上代码执行结果为:
a 大于等于 40,小于 60
a 的值为 50
if 嵌套语句
你还可以在 if
或 else if
语句中嵌入一个或多个 if
或 else if
语句。Go 语言中 if...else
语句的语法如下:
if condition1 {
// 如果条件1为真,执行这里的代码
if condition2 {
// 如果条件2为真,执行这里的代码
}
}
你可以以同样的方式在 if
语句中嵌套 else if...else
语句
请看下面实例:
package main
import "fmt"
func main() {
/* 定义局部变量 */
var a int = 100
var b int = 200
/* 判断条件 */
if a == 100 {
/* if 条件语句为 true 执行 */
if b == 200 {
/* if 条件语句为 true 执行 */
fmt.Printf("a 的值为 100,b 的值为 200\n")
}
}
fmt.Printf("a 值为 %d\n", a )
fmt.Printf("b 值为 %d\n", b )
}
以上代码执行结果为:
a 的值为 100,b 的值为 200
a 值为 100
b 值为 200
switch 语句
switch
语句用于基于不同条件执行不同动作,每一个 case
分支都是唯一的,从上直下逐一测试,直到匹配为止。你可以定义任意个数的 case
分支。
值得注意的是,不同于 C/C++ 等编程语言,Go 语言的 switch
语句匹配项后面不需要添加 break
语句。
Go 语言中 switch
语句的语法如下:
switch expression {
case value1:
// 如果expression的值等于value1,执行这里的代码
case value2:
// 如果expression的值等于value2,执行这里的代码
default:
// 如果以上条件都不满足,执行这里的代码
}
变量 expression
可以是任何类型,而 value1
和 value2
则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。
你可以同时测试多个可能符合条件的值,使用逗号分割它们,例如 case val1, val2, val3
。
请看下面实例:
package main
import "fmt"
func main() {
/* 定义局部变量 */
var grade string = "B"
var score int = 90
switch score {
case 90: grade = "A"
case 80: grade = "B"
case 60, 70: grade = "C"
default: grade = "D"
}
switch {
case grade == "A" :
fmt.Printf("优秀!\n")
case grade == "B" :
fmt.Printf("良好\n")
case grade == "C" :
fmt.Printf("及格\n")
default:
fmt.Printf("不及格\n")
}
fmt.Printf("你的等级是 %s\n", grade)
}