Go语言--语法基础5--基本数据类型--类型转换
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