Go语言学习之旅03——条件语句

if语句

1
2
3
4
5
6
7
8
9
10
func main() {
a := 88
if a == 100 {
fmt.Print("满分")
} else if a >= 90 {
fmt.Println("优秀")
} else {
fmt.Println("一般")
}
}

在go语言当中,if语句还可以同时赋值并判断,两条语句使用分号;`隔开

1
2
3
4
5
6
7
8
9
func main() {
var chinese int = 88
var math int = 79
if total := chinese + math; total < 180 {
fmt.Print("不够好")
} else {
fmt.Print("还不错")
}
}

switch语句

go语言的switch语句中,每一个case都默认有break,如果需要穿透的效果,则使用fallthrough关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func eval(a, b int, op string) int {
// 四则运算
var result int
switch op {
case "+":
result = a + b
case "-":
result = a - b
case "*":
result = a * b
case "/":
result = a / b
case "?":
fallthrough
default:
panic("unsupported operator:" + op) // 报错
}
return result
}

通常switch需要传入一个表达式才可以和case匹配,但是在go语言的设计当中,表达式不是必须的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
func scoreLevel(score int) string {
// 计算成绩等级
result := ""
switch { // switch可以没有表达式
case score < 0 || score > 100:
panic(fmt.Sprintf("wrong score:%d", score)) // 强制报错并中断程序的执行
case score < 60:
result = "E"
case score < 70:
result = "D"
case score < 80:
result = "C"
case score < 90:
result = "B"
case score < 100:
result = "A"
case score == 100:
result = "S"
}

return result
}

注意:go语言的返回值类型写在方法的后方