语言基础之流程控制if分支
语言基础之流程控制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 初始化;条件{
内容
初始化的内容只在内部有效
}
在当下的阶段,必将由程序员来主导,甚至比以往更甚。