# Go语言条件语句

# 1 程序的流程结构

  • 程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。
  • 顺序结构:从上向下,逐行执行。
  • 选择结构:条件满足,某些代码才会执行。0-1次
  • 分支语句:if,switch,select
  • 循环结构:条件满足,某些代码会被反复的执行多次。0-N次
  • 循环语句:for

if条件

# 2 条件语句

# 2.1 If语句

语法格式:

if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
}
1
2
3
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
} else {
  /* 在布尔表达式为 false 时执行 */
}
1
2
3
4
5
if 布尔表达式1 {
   /* 在布尔表达式1为 true 时执行 */
} else if 布尔表达式2{
   /* 在布尔表达式1为 false ,布尔表达式2为true时执行 */
} else{
   /* 在上面两个布尔表达式都为false时,执行*/
}
1
2
3
4
5
6
7

示例代码:

package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var a int = 10
 
   /* 使用 if 语句判断布尔表达式 */
   if a < 20 {
       /* 如果条件为 true 则执行以下语句 */
       fmt.Printf("a 小于 20\n" )
   }
   fmt.Printf("a 的值为 : %d\n", a)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。它的语法是

if statement; condition {  
}

if condition{
    
    
}
1
2
3
4
5
6
7

示例代码:

package main

import (  
    "fmt"
)

func main() {  
    if num := 10; num % 2 == 0 { //checks if number is even
        fmt.Println(num,"is even") 
    }  else {
        fmt.Println(num,"is odd")
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

需要注意的是,num的定义在if里,那么只能够在该if..else语句块中使用,否则编译器会报错的。


func ifDemo1() {
	score := 65
	if score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}
}
1
2
3
4
5
6
7
8
9
10
11

# 3 条件判断特殊写法

# if条件判断还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断。

# 举个例子:

func ifDemo2() {
	if score := 65; score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}
}
1
2
3
4
5
6
7
8
9

思考题: 上下两种写法的区别在哪里?