if语句是所有流程控制语句中最常用的一个,这个语句可以根据条件表达式来执行代码块中的两个分支,表达式只能返回布尔类型,ture false。当ture时执行if后面的代码块,false,执行else后面的代码块
package main
import "fmt"
func main() {
a := 1
if a < 20 {
fmt.Println("a小于20\n")
} else {
fmt.Printf("a的值是:%d\n", a)
}
}
当上面的判断中,因为a值小于20,表达式返回true,所以可以返回a小于20的信息,但如果吧a值设置为100 ,那么程序将返回false,走默认输出
package main
import "fmt"
func main() {
a := 100
if a < 20 {
fmt.Printf("a小于20\n")
} else {
fmt.Printf("a大于20\n")
}
fmt.Printf("a的值是:%d\n", a)
}
如果想判断a的值是否小于20且大于10,需要做if的嵌套了
package main
import "fmt"
func main() {
a := 11
if a < 20 {
fmt.Printf("a小于20\n")
if a > 10 {
fmt.Printf("a大于10\n")
} else {
fmt.Printf("a小于10\n")
}
} else {
fmt.Print("a大于20\n")
}
fmt.Printf("a的值是:%d\n", a)
}
上面的代码转却判断了a的值,但是嵌套一层if-else语句,这在编程规范中可以说是大忌,特别实在逻辑复杂的情况下,嵌套if语句将非常影响性能,因此使用else-if
package main
import "fmt"
func main() {
a := 11
if a > 20 {
fmt.Printf("a大于20\n")
} else if a < 10 {
fmt.Printf("a小于10\n")
} else {
fmt.Printf("a大于10\n")
fmt.Printf("a小于20\n")
}
fmt.Printf("a的值是:%d\n", a)
}
else-if 语句是前面if-else语句之上再度扩展的,为了解决多重判断的问题。else-if语句可以连续使用多个elseif关键字,例如一个数字是否大于10小于20且不等于11
package main
import "fmt"
func main() {
a := 20
if a > 20 {
fmt.Printf("a大于20\n")
} else if a < 10 {
fmt.Printf("a小于10\n")
} else if a == 11 {
fmt.Printf("a等于11\n")
} else {
fmt.Printf("a大于10\n")
fmt.Printf("a小于20\n")
fmt.Printf("a不等于11\n")
fmt.Printf("a的值是:%d\n", a)
}
//fmt.Printf("a的值是:%d\n", a)
}
package main
import "fmt"
func main() {
a := 14
if a > 20 {
fmt.Printf("a大于20\n")
} else if a < 10 {
fmt.Printf("a小于10\n")
} else if a == 11 {
fmt.Printf("a等于11\n")
} else {
fmt.Printf("a大于10且a小于20且a不等于11,a的值是:%d\n", a)
}
//fmt.Printf("a的值是:%d\n", a)
}
我觉得我这个写法更容易理解, 多行输出有点傻