if 语句结构
GO
的 if
语句结构,像其他语言一样有以下三种
func main() {
if 布尔表达式 { // 如果不是复合条件判断,不需要使用 ()
// 逻辑...
}
}
func main() {
if 布尔表达式 {
// 逻辑1...
} else {
// 逻辑2...
}
}
func main() {
if 布尔表达式1 {
// 逻辑1...
} else if 布尔表达式2 {
// 逻辑2...
} else {
// 逻辑3...
}
}
if 语句变体
使用简洁变量赋值,与判断逻辑放在一行进行处理,该变量的作用范围被限制在 if...else
语句组合中
func main() {
if num := 6; num%2 == 0 {
fmt.Println(num, "是偶数")
} else {
fmt.Println(num, "是奇数")
}
}
可以将返回值与判断放在一行进行处理,而且返回值的作用范围被限制在 if...else
语句组合中。
package main
import (
"errors"
"fmt"
)
func promise() error {
return errors.New("error")
}
func main() {
if err := promise(); err != nil {
fmt.Println("error happen")
}
fmt.Println(err) // 此处会报错 undefined: err
}
Tips:
在编程中,变量在其实现了变量的功能后,作用范围越小,所造成的问题可能性就越小。
每一个变量代表一个状态,有状态的地方,状态就会被修改,
函数的局部变量只会影响一个函数的执行,
但全局变量可能会影响所有代码的执行状态,
因此限制变量的作用范围对代码的稳定性有很大帮助。
代码示例
package main
import (
"fmt"
)
func main() {
// if... 条件句
isNinja := true
if isNinja {
fmt.Println("一个忍者")
}
// if...else... 条件句
age := 18
if age < 18 {
fmt.Println("小孩")
} else {
fmt.Println("成年")
}
// if...else if...else... 条件句
name := "Naruto"
if name == "Sakura" {
fmt.Println("春野樱")
} else if name == "Sasuke" {
fmt.Println("宇智波佐助")
} else {
fmt.Println("漩涡鸣人")
}
// if 条件句的嵌套
hero, country := "悟空", "日本"
if hero == "悟空" {
if country == "日本" {
fmt.Println("七龙珠")
} else {
fmt.Println("西游记")
}
}
// 复合条件(可以使用括号扩住单个条件)
height, weight := 175, 70
if (height > 180) && (weight < 60) {
fmt.Println("高瘦子")
} else if (height < 170) && (weight > 80) {
fmt.Println("矮胖子")
} else {
fmt.Println("匀称")
}
}