条件语句
条件语句就是根据不同的条件执行不同的代码。
示意图:
if 语句
if 语句用于判断某个条件是否满足,当条件满足时则执行 if 语句块中的代码。
语法:
if 条件表达式 {
// 当条件表达式为true时执行
}
复制代码
代码示例:
package main
import "fmt"
func main() {
score := 90
if score >= 90 {
fmt.Println("优秀")
}
}
复制代码
因为表达式score >= 90
的结果为 true,则会在控制台打印出优秀
运行结果:
if...else
在 if 条件语句中,如果表达式为 true 则会执行 if 语句块中的代码,在 if 后还可以增加 else 语句块,则表示当 if 条件为 false 时执行 else 中的代码。
语法:
if 条件表达式 {
// 当条件表达式为true时执行
} else {
// 当条件表达式为false时执行
}
复制代码
代码示例:
package main
import "fmt"
func main() {
score := 80
if score >= 90 {
fmt.Println("优秀")
} else {
fmt.Println("一般")
}
}
复制代码
score = 80,由于表达式score >= 90
结果为 false,则不会执行 if 中的语句块,会转而执行 else 中的语句块。
运行结果:
除了直接使用if...else
之外,还可以在 else 后面继续增加 if 条件判断。
语法:
if 条件表达式1 {
// 当条件表达式1为true时执行
} else if 条件表达式2 {
// 当条件表达式2为true时执行
} else {
// 当条件表达式1和2都不为true时执行
}
复制代码
代码示例:
package main
import "fmt"
func main() {
score := 80
if score >= 90 {
fmt.Println("优秀")
} else if score >= 80 {
fmt.Println("良好")
} else {
fmt.Println("一般")
}
}
复制代码
运行结果:
if...else if
判断没有数量限制,可一直添加else if
判断,但是在实际开发中不建议写太多,如果有特别多得条件需要判断,可使用 switch 进行判断
if 嵌套
if 嵌套表示可以在 if 语句块中添加 if 判断
语法:
if 条件表达式1 {
if 条件表达式2 {
// 当条件表达式2为true时执行
} else {
// 当条件表达式2为false时执行
}
} else {
// 当条件表达式1为false时执行
}
复制代码
代码示例:
package main
import "fmt"
func main() {
score := 90
if score >= 90 {
if score >= 95 {
fmt.Println("非常优秀")
} else {
fmt.Println("优秀")
}
} else {
fmt.Println("一般")
}
}
复制代码
score = 90
,则第一层 if 判断score >= 90
为 true,则进入到第一层 if 语句块中,在第一层语句块中score >= 95
为 false,则执行 else 中的代码,最后输出为优秀。
运行结果:
if 嵌套也可以无限制的嵌套,但是在实际开发中同样不建议嵌套太多层。
switch
switch 语句是根据变量的值执行不同的 case,在执行的过程中,会从第一个 case 开始判断,直到碰到一个符合条件的 case 为止,然后执行该 case 中的语句,不同于 java 的是不需要在每一个 case 中添加 break 语句,go 语言默认情况下 case 后面自带 break 语句。
语法:
switch 变量 {
case 变量1:
// 当变量和变量1相等时执行
case 变量2:
// 当变量和变量2相等时执行
default:
// 当没有符合的case时执行
}
复制代码
代码示例:
package main
import "fmt"
func main() {
score := 80
switch score {
case 90:fmt.Println("优秀")
case 80:fmt.Println("良好")
case 70:fmt.Println("一般")
default:fmt.Println("默认")
}
}
复制代码
运行结果:
switch 的变量可以时任意类型,而 case 的变量可以是相同类型的任意值,类型不局限,但是 switch 和 case 的类型必须时相同的类型,同样 case 还可以为表达式。
代码示例:
package main
import "fmt"
func main() {
score := 80
switch {
case score >= 90:fmt.Println("优秀")
case score >= 80:fmt.Println("良好")
case score >= 70:fmt.Println("一般")
default:fmt.Println("默认")
}
}
复制代码
当 case 为表达式时,则 switch 中就不需要再写变量。
运行结果:
fallthrough
由于在 go 语言中每一个 case 后面都会默认加上 break,所以每次匹配都执行其中的一个 case,但是如果需要执行后面的 case,则可以使用 fallthrough,使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。
代码示例:
package main
import "fmt"
func main() {
score := 80
switch {
case score >= 90:
fmt.Println("优秀")
fallthrough
case score >= 80:
fmt.Println("良好")
fallthrough
case score >= 70:
fmt.Println("一般")
fallthrough
default:fmt.Println("默认")
}
}
复制代码
由于在每个 case 后面都增加了 fallthrough,则当case score >= 80
匹配时,除了执行该 case 中的语句外,还会直接之后它后面的所有 case,并且不会判断 case 是否为 true。
运行结果:
评论