零基础 go - 26(流程控制 - 跳转控制语句 break 和 continue、goto语句、return语句)

0 阅读3分钟

一、break

break 语句用于终止某个语句块的执行,用于中断当前 for 或者 switch 语句的执行流程,跳出当前循环或条件分支。

1、基本语法

image.png

2、流程图

image.png

3、使用细节

  • 如果 break 语句在多层嵌套的循环中,默认只会跳出它所在的那一层循环。如果需要跳出多层循环,可以使用标签(label)来指定要跳出的循环层数。
  • break 语句只能用于循环(for、while、do-while)和 switch 语句中,不能在函数、if 语句等其他代码块中使用。
  • 在 switch 语句中,break 语句用于终止当前 case 的执行,防止继续执行后续的 case。
package main

import "fmt"

func main() {
    // 单层循环中使用 break
    for i := 0; i < 5; i++ {
        if i == 3 {
            break // 当 i 等于 3 时,跳出循环
        }
        fmt.Println(i)
    }




    // 多层循环中使用 break, 默认跳出最近的循环
    for i := 0; i < 3; i++ {
        for j := 0; j < 3; j++ {
            if i == 1 && j == 1 {
                break // 跳出当前的内层循环
            }
            fmt.Printf("i: %d, j: %d\n", i, j)
        }
    }




    // 多层循环中使用 break 和标签
    outerLoop:
    for i := 0; i < 3; i++ {
        for j := 0; j < 3; j++ {
            if i == 1 && j == 1 {
                break outerLoop // 跳出外层循环
            }
            fmt.Printf("i: %d, j: %d\n", i, j)
        }
    }




    // switch 语句中使用 break
    day := "Monday"
    switch day {
        case "Monday":
            fmt.Println("It's Monday")
            break // 结束当前 case 的执行
        case "Tuesday":
            fmt.Println("It's Tuesday")
            break
        default:
            fmt.Println("It's another day")
    }
}

二、continue

continue 语句用于跳过当前循环中的剩余代码,直接进入下一次循环的判断条件,继续执行下一轮循环。

1、基本语法

image.png

2、流程图

image.png

3、使用细节

  • continue 语句只能用于循环(for、while、do-while)中,不能在函数、if 语句等其他代码块中使用。
  • 在多层嵌套的循环中,continue 语句默认只会跳过它所在的那一层循环的剩余代码。如果需要跳过多层循环,可以使用标签(label)来指定要跳过的循环层数。
package main

import "fmt"

func main() {
    // 单层循环中使用 continue
    for i := 0; i < 5; i++ {
        if i%2 == 0 {
            continue // 当 i 是偶数时,跳过当前循环的剩余代码,直接进入下一次循环
        }
        fmt.Println(i) // 只会打印奇数
    }




    // 多层循环中使用 continue, 默认跳过最近的循环
    for i := 0; i < 3; i++ {
        for j := 0; j < 3; j++ {
            if i == 1 && j == 1 {
                continue // 跳过当前的内层循环的剩余代码,继续下一轮内层循环
            }
            fmt.Printf("i: %d, j: %d\n", i, j)
        }
    }




    // 多层循环中使用 continue 和标签
    outerLoop:
    for i := 0; i < 3; i++ {
        for j := 0; j < 3; j++ {
            if i == 1 && j == 1 {
                continue outerLoop // 跳过外层循环的剩余代码,继续下一轮外层循环
            }
            fmt.Printf("i: %d, j: %d\n", i, j)
        }
    }

}

三、goto 语句

goto 语句用于无条件地跳转到程序中的另一个位置,通常用于跳出多层嵌套的循环或者在函数中实现错误处理等场景。

在go中一般不建议使用这个 goto 语句,因为它会使代码的流程变得混乱,难以理解和维护。过度使用 goto 可能导致“意大利面条代码”(spaghetti code),使得程序的逻辑难以追踪和调试。

1、基本语法

image.png

2、流程图

image.png

image.png

  • 输出的结果为 ok1 ok5 ok6 ok7

四、return 语句

  • return 语句用于结束函数的执行,并返回一个值(如果需要)。
  • return 语句可以在函数的任何位置使用,一旦执行到 return 语句,函数将立即停止执行,并将控制权返回给调用者。如果 return 后
  • 如果 return 语句在main函数中,表示终止main函数(即,终止程序)
package test

func getA() {
    return 'A'
}