条件控制 if

if

基本语法

if 条件表达式 {
代码块
}

说明

  • 当条件表达式为true时,才会执行 { } 中的代码块
  • { } 不可以省略
  • 条件表达式 不需要加括号 ( ),但是加括号也不会报错
  • if 后面只能跟条件表达式,不能写赋值语句
    1. // 演示if条件控制语句
    2. package main
    3. import (
    4. "fmt"
    5. )
    6. func main (){
    7. a, b := 24, 26
    8. if a < b {
    9. fmt.Println("a < b")
    10. }
    11. }

if else

基本语法

if 条件表达式 {
代码块A
} else {
代码块B
}

说明

  • 当条件表达式为true时,执行代码块A,否则执行代码块B
  • else 不能开头书写,需要和 if 的尾花括号书写在一行
    1. // 演示if else条件控制语句
    2. package main
    3. import (
    4. "fmt"
    5. )
    6. func main (){
    7. a, b := 24, 26
    8. if a > b {
    9. fmt.Println("a > b")
    10. } else {
    11. fmt.Println("a < b")
    12. }
    13. }

else if

基本语法

if 条件表达式A {
代码块A
} else if 条件表达式B {
代码块B
} else {
代码块C
}

说明

  • 当条件表达式A为true时,执行代码块A。(执行完代码块A后会直接返回,不会检测条件B)
  • 仅当条件表达式A为false时,并且条件表达式B为true时,执行代码块B
  • 如果条件表达式A、B均为false,则执行代码块C
  • else if不能开头书写,需要和 if 的尾花括号书写在一行

条件控制 switch

基本介绍

switch 语句用于基于针对不同条件下,执行不同的的代码块,每一个case分支都是唯一的,从上到下逐一测试,直到匹配到为止。

基本语法

switch 表达式 {
case 表达式1,表达式2, … :
代码块A
case 表达式3,表达式4, … :
代码块B
case 表达式5,表达式6, … :
代码块C
……
default:
代码块D
}

说明

  • switch的执行流程是:先执行switch后面的表达式,得到值,然后依次和case后面的表达式进行比较,如果相等/匹配,就执行对应case的语句块,然后退出switch条件控制
  • 如果switch后面表达式的值没有和每个case后面表达式匹配成功,则执行default后面的语句块,然后退出switch条件控制
  • Go中case后面表达式可以有多个,使用逗号分割
  • Go中case语句块后面不需要写break,因为默认会有,即在默认情况下,当程序执行完case语句块后,就直接退出该switch条件控制 ```go // 演示 switch 条件控制语句 package main

import “fmt”

func main() { var num uint8 fmt.Println(“请输入一个1-7的数字”) fmt.Scanln(&num) switch num { case 1: fmt.Println(“周一”) case 2: fmt.Println(“周二”) case 3: fmt.Println(“周三”) case 4: fmt.Println(“周四”) case 5: fmt.Println(“周五”) case 6: fmt.Println(“周六”) case 7: fmt.Println(“周日”) default: fmt.Println(“您输入的数字不合法”) } } ```

注意事项

  • switch / case 后面是一个表达式(即:常量值、变量、一个有返回值的函数等都可以)
  • case 后面的表达式值的数据类型,必须和switch的表达式值的数据类型保持一致
  • case 后面可以带多个表达式,使用逗号分隔。比如:case 表达式1, 表达式2, 表达式3…
  • case 后面的表达式如果是常量值,则其他case后面表达式的常量值不能与之重复
  • case 后面不需要带break,程序匹配到一个case后就会执行对应的代码块,然后退出switch控制,如果一个case都没有匹配到,则执行default后面的代码块
  • default语句不是必须,是可选项
  • switch 后面也可以不带表达式,类型if else分支来使用
  • switch 后面也可以直接申请/定义一个变量,用分号结束,但是不推荐这样使用
  • switch穿透 fallthrough,如果在case语句块后面增加 fallthrough,则会继续执行下一个case,也叫switch穿透
  • Type switch:switch语句还可以用于type-switch来判断某个interface变量中实际指向的变量类型