零基础 go - 22(流程控制 - 分支控制 if)

0 阅读2分钟

在程序中,程序运行的流程控制决定程序是怎么样执行的。

一、主要三大流程控制

  • 顺序控制
  • 分支控制
  • 循环控制

二、分支控制

程序根据条件的不同执行不同的代码块

  • 单分支: if
  • 双分支: if...else
  • 多分支: if...else if...else
  • 嵌套分支:在一个分支内部再使用分支控制
  • switch...case(go中的switch比其他语言更强大,可以实现多种分支控制)

1、单分支

  • 基本语法

image.png

  • 流程图

image.png

  • 注意:go支持在if中直接定义一个变量;if后面的 { 不能换行

2、双分支

  • 基本语法

image.png

  • 流程图

image.png

  • 注意:双分支只会执行其中的一个分支;if后面的 { 不能换行;else 不能换行

3、多分支

  • 基本语法

image.png

  • 流程图

image.png

  • 注意:else 不是必须的。 如果没有else,所有条件都不满足时,程序会跳过整个多分支结构继续执行后面的代码

4、嵌套分支

在一个分支中嵌套了另一个完整的分支结构。里面的分支称为内层分支,外面的分支称为外层分支

  • 基本语法

image.png

  • 注意:建议嵌套不超过 3 层,否则会影响代码的可读性和维护性。if后面的 { 不能换行;else 不能换行

代码示例


package main

import "fmt"


func main() {
    // 单分支
    var a int = 10
    if a > 5 { // 注意这个 { 不能换行,否则编译报错
        fmt.Println("a 大于 5")
    }

    // 双分支
    if a > 5 {
        fmt.Println("a 大于 5")
    } else { // 注意这个 { 和 else 不能换行,否则编译报错
        fmt.Println("a 小于等于 5")
    }

    // 多分支
    if a > 10 {
        fmt.Println("a 大于 10")
    } else if a > 5 {
        fmt.Println("a 大于 5 小于等于 10")
    } else {
        fmt.Println("a 小于等于 5")
    }


    // 嵌套分支
    if a > 10 {
        fmt.Println("a 大于 10")
    } else {
        if a > 5 {
            fmt.Println("a 大于 5 小于等于 10")
        } else {
            fmt.Println("a 小于等于 5")
        }
    }


    // if 后面可以声明变量(但是一般不建议这么写)
    if b := a * 2; b > 15 { // 注意这个 { 不能换行,否则编译报错
        fmt.Println("b 大于 15")
    } else {
        fmt.Println("b 小于等于 15")
    }
}