语言基础之流程控制if分支
一、if else(分支结构)
if条件判断基本写法
Go语言中if条件判断的格式如下:
if 表达式1 {
分支1
} else if 表达式2 {
分支2
} else{
分支3
}
当表达式1的结果为true时,执行分支1,否则判断表达式2,如果满足则执行分支2,都不满足时,则执行分支3。 if判断中的else if和else都是可选的,可以根据实际需要进行选择。
Go语言规定与if匹配的左括号{必须与if和表达式放在同一行,{放在其他位置会触发编译错误。 同理,与else匹配的{也必须与else写在同一行,else也必须与上一个if或else if右边的大括号在同一行。
举个例子:
func ifDemo1() {
score := 65
if score >= 90 {
fmt.Println("A")
} else if score > 75 {
fmt.Println("B")
} else {
fmt.Println("C")
}
}
由于 if{…} else {…} 是一个单独的语句,它的中间不应该出现分号。因此,需要将 else 语句放置在 } 之后处于同一行中。
将 else 语句移动到 if 语句结束后 } 的后面,以防止分号的自动插入。
二、if条件判断特殊写法
if statement; condition {
}
if条件判断还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断,举个例子:
func ifDemo2() {
if score := 65; score >= 90 {
fmt.Println("A")
} else if score > 75 {
fmt.Println("B")
} else {
fmt.Println("C")
}
// fmt.Println(score) # 报错
}
// score
在上面的程序中,score 在 if 语句中进行初始化,score 只能从 if 和 else 中访问。也就是说 score 的范围仅限于 if else 代码块。如果我们试图从其他外部的 if 或者 else 访问 score,编译器会不通过。
思考题: 上下两种写法的区别在哪里? 作用域不同,特殊写法中声明的score只能在if判断内部使用
三、总结
- 单分支结构,
- 多分支结构
- 条件的变形使用
- 注意分支的结构编写方式
if 条件{
内容
}else if 条件{
}else{
}
# 特殊的
if 初始化;条件{
内容
初始化的内容只在内部有效
}