Go
编程语言中
if
条件语句的语法如下:
1、基本形式
if
布尔表达式
{
/*
在布尔表达式为
true
时执行
*/
}
If
在布尔表达式为
true
时,其后紧跟的语句块执行,如果为
false
则
不执行。
package main
import "fmt"
func main() {
var a int = 10
if a < 20 {
fmt.Printf("a 小于 20\n" )
}
fmt.Printf("a 的值为 : %d\n", a)
}
以上代码执行结果为:
a 小于 20
a 的值为 : 10
2、if...else 语句的语法如下:
if
布尔表达式
{
/*
在布尔表达式为
true
时执行
*/
} else {
/*
在布尔表达式为
false
时执行
*/
}
If
在布尔表达式为
true
时,其后紧跟的语句块执行,如果为
false
则
执行
else
语句块。
package main
import "fmt"
func main() {
var a int = 100
if a < 20 {
fmt.Printf("a 小于 20\n" )
} else {
fmt.Printf("a 不小于 20\n" )
}
fmt.Printf("a 的值为 : %d\n", a)
}
以上代码执行结果为:
a 不小于 20
a 的值为 : 100
3、 Go的if语句嵌套形式如下:
阶梯嵌套形式
if
布尔表达式
1 {
/*
在布尔表达式为
true
时执行
*/
} else if
布尔表达式
2 {
/*
在布尔表达式
2
为
true
时执行
该位置可以多层
嵌套
*/
} else if
布尔表达式
3 {
/*
在布尔表达式
3
为
true
时执行
该位
置可以多层嵌套
*/
} else if
布尔表达式
4 {
/*
在布尔
表达式
4
为
true
时执行
该位置可以多层嵌套
*/
} else {
/*
在
布尔表达式
2
为
false
时执行
*/
}

if ...else...
的多层嵌套,建议嵌套的深度不要超过四层。

Go
语言
switch
多分支语句
switch
语句用于基于不同条件执行不同动作,每一个
case
分支都是
唯一的,从上直下逐一测试,
直到匹配为止。
switch
语句执行的过程从上至下,直到找到匹配项,匹配项后面也
不
需要再加
break
语法
Go
编程语言中
switch
语句的语法如下:
switch var {
case val1 :
...
case val2 :
...
default:
...
}
变量
var1
可以是任何类型,而
val1
和
val2
则可以是同类型的任意
值。类型不被局限于常量或整数,
但必须是相同的类型;或者最终结果为相同类型的表达式。
您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:
case val1, val2, val3
。
实例:
package main
import "fmt"
func main() {
var grade string = "B"
var marks int = 90
switch marks {
case 90: grade = "A"
case 80: grade = "B"
case 70 : grade = "C"
case 60: grade = “D”
case 50: grade ="E"
default: grade = "F"
}
switch {
case grade == "A" :
fmt.Printf("优秀!\n" )
case grade == "B", grade == "C" :
fmt.Printf("良好\n" )
case grade == "D" :
fmt.Printf("及格\n" )
case grade == "E":
fmt.Printf("不及格\n" )
default:
fmt.Printf("差\n" )
}
fmt.Printf("你的等级是 %s\n", grade )
}
以上代码执行结果为:
优秀!
你的等级是 A
switch
语句还可以被用于
type-switch
来判断某个
interface
变量中实
际存储的变量类型。
Type Switch
语法格式如下:
switch x.(type) {
case type:
statement(s)
case type:
statement(s)
/* 你可以定义任意个数的case */
default: /* 可选 */
statement(s)
}
实例
package main
import "fmt"
func main() {
var x int
x = 100
switch i := x.(type) {
case nil:
fmt.Printf(" x 的类型 :%T",i)
case int:
fmt.Printf("x 是 int 型")
case float64:
fmt.Printf("x 是 float64 型")
case func(int) float64:
fmt.Printf("x 是 func(int) 型")
case bool, string:
fmt.Printf("x 是 bool 或 string 型" )
default:
fmt.Printf("未知型")
}
}
以上代码执行结果为:
x
的类型
:<nil>
补充:
fallthrough
是配合
switch
使用的,
golang
里面每个
case
默认都有一个
break
,
fallthrough
可以取消这个默认的
break,
并且执行下一个
case
而不用判断
下个
case
,
如果没有
case
会执行
default
的内容。
比如:
package main
import (
"fmt"
)
func main() {
a := 2
switch a {
case 1:
fmt.Println("a=1")
case 2:
fmt.Println("a=2")
fallthrough
case 3:
fmt.Println("a=3")
fallthrough
case 4:
fmt.Println("a=4")
fallthrough
default:
fmt.Println("default")
}
}
执行结果:
a=2
a=3
a=4
default