流程控制

2022-02-06 GoLang 大约 3 分钟

流程控制语句是用来控制程序中语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

# 单分支语句

当条件表达式为true时,就会执行的代码。

语法:

if 条件表达式 {
	// 逻辑代码
}
1
2
3
package main

import "fmt"

func main() {
	var age int = 19
	if age > 18 {
		fmt.Println("小明今年满18岁了")
	}
  if count := 20; count < 30 {
    fmt.Println("总数小于30")
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13

相关信息

  • 条件表达式的左右括号可以不写,也建议不写。
  • if和表达式中间,一定要有空格。
  • 在Golang中,{}是必须有的,就算你只写一行代码。
  • 在Golang中,if后面并列的加入变量的定义。

# 双分支语句

当条件表达式成立时,执行逻辑代码1,否则执行代码2。

语法:

if 条件表达式 {
	// 逻辑代码1
} else {
	// 逻辑代码2
}
1
2
3
4
5
package main

import "fmt"

func main() {
	var age int = 17
	if age > 18 {
		fmt.Println("小明今年满18岁了")
	} else {
		fmt.Println("小明今年没有满18岁了")
	}
}
1
2
3
4
5
6
7
8
9
10
11
12

注意

else 的左右括号必须在同一行,不可以换行。

# 多分支语句

语法:

if 条件表达式 {
	// 逻辑代码1
} else {
	// 逻辑代码2
}
...
else {
	// 逻辑代码n
}
1
2
3
4
5
6
7
8
9

# switch分支

基本语法:

switch 表达式 {
	case 值1,值2,...
		语句块1
	case 值3,值4
		语句块2
	default: 
		语句块
}
1
2
3
4
5
6
7
8
package main

import "fmt"

func main() {
	var age int = 16
	switch age {
	case 18:
		fmt.Println("小明今年满18岁了")
	default:
		fmt.Println("小明今年没有满18岁了")
	}
}
// 小明今年没有满18岁了
1
2
3
4
5
6
7
8
9
10
11
12
13
14

相关信息

  • switch后是一个表达式(即:常量值,变量,一个有返回值的函数等)。

  • case后的各个值的数据类型,必须和switch的表达式数据类型一致。

  • case后面可以带多个表达式,使用逗号间隔。比如:case 表达式1,表达式2...

    func main() {
    	var age int = 16
    	switch age {
    	case 18, 17, 16:
    		fmt.Println("小明今年满18岁了")
    	default:
    		fmt.Println("小明今年没有满18岁了")
    	}
    }
    // 小明今年满18岁了
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  • case后面的表达式如果是常量值(字面量),则要求不能重复。

  • case后面不需要带break,程序匹配到一个case后就会执行对应的代码块,然后退出switch,如果一个都匹配不到,则执行default。

  • default语句不是必须的。

  • switch语句也可以不带表达式,当做if分支来使用。

    func main() {
    	var age int = 16
    	switch {
    	case age > 17:
    		fmt.Println("小明今年满18岁了")
    	default:
    		fmt.Println("小明今年没有满18岁了")
    	}
    }
    // 小明今年没有满18岁了
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  • switch后也可以直接声明/定义一个变量,分号结束,不推荐。

    func main() {
      // 只能是 := 不能是 var age int
    	switch age := 16; {
    	case age > 17:
    		fmt.Println("小明今年满18岁了")
    	default:
    		fmt.Println("小明今年没有满18岁了")
    	}
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    注意需要分号结尾。

  • switch穿透,利用fallthrough关键字,如果在case语句块后增加fallthrough,则会继续执行下一个case,也叫switch穿透。

    func main() {
    	var age int = 16
    	switch age {
    	case 16:
    		fmt.Println("小明今年满18岁了")
    		fallthrough
    	case 8:
    		fmt.Println("我打印了")
    	default:
    		fmt.Println("小明今年没有满18岁了")
    	}
    }
    // 打印结果
    // 小明今年满18岁了
    // 我打印了
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
上次编辑于: 2023年7月4日 09:36