Golang 循环语句

169 阅读2分钟

循环语句

for 循环是一个循环控制结构,可以执行指定次数的循环

Go 语言的 for 循环有以下三种形式

for init;  condition;  post { }

ps :
init :一般为赋值表达式,给控制变量赋初始值(可省略)
condition :关系表达式 或 逻辑表达式,循环控制条件
post :一般为赋值表达式,给控制变量 增量 或 减量(可省略)

for condition { }

for { }

循环嵌套

package main

import "fmt"

func main () {
    // 定义控制变量
    var i, j int
    
    for i = 2; i <= 100; i++ {
        
        for j = 2; j <= (i / j); j++ {
            if (i % j == 0) {
                break
            }
        }
        
        if (j > (i / j)) {
            fmt.Printf("%d  是素数\n", i)
        }
    }
}

for 循环的 range 格式可以对 slice切片、map集合、array数组、string字符串、channel通道

在 数组、切片、字符串 中他返回元素的索引和索引对应的值;在 集合 中返回 key-value 对

for i, c := range "go" {
    fmt.Println(i, c)
}

ps :range用来枚举Unicode字符串。第一个参数是字符的索引,第二个是字符(Unicode的值)本身。
0 103
1 111

break 关键字

用于在循环语句体中跳出循环,并开始执行循环之后的语句

在多重循环中,可以使用标号 label 标出想 break 的循环

package main

import "fmt"

func main() {

    // 不使用标记
    fmt.Println("---- break ——")

    for i := 1; i <= 3; i++ {
        fmt.Printf("i: %d\n", i)
        
        for i2 := 11; i2 <= 13; i2++ {
            fmt.Printf("i2: %d\n", i2)
            break
        }
    }

    // 使用标记
    fmt.Println("---- break label ——")

    re:
        for i := 1; i <= 3; i++ {
            fmt.Printf("i: %d\n", i)

            for i2 := 11; i2 <= 13; i2++ {
                fmt.Printf("i2: %d\n", i2)
                break re
            }
        }
}

continue 关键字

用于在循环语句体中跳过当前循环,并开始下一次循环的语句

在多重循环中,可以使用标号 label 标出想 continue 的循环

package main

import "fmt"

func main() {

    // 不使用标记
    fmt.Println("---- continue ---- “)

    for i := 1; i <= 3; i++ {
        fmt.Printf("i: %d\n", i)

        for i2 := 11; i2 <= 13; i2++ {
            fmt.Printf("i2: %d\n", i2)
            continue
        }
    }

    // 使用标记
    fmt.Println("---- continue label ----")

    re:
        for i := 1; i <= 3; i++ {
            fmt.Printf("i: %d\n", i)

            for i2 := 11; i2 <= 13; i2++ {
                fmt.Printf("i2: %d\n", i2)
                continue re
            }
        }
}

goto 关键字

Go 语言的 goto 语句可以无条件的转移到过程中指定的行

goto 语句通常与条件语句配合使用。可用来实现 条件转移、构成循环、跳出循环体 等功能

但是,在结构化程序设计中一般不主张使用 goto 语句,以免造成流程的混乱,使理解和调试程序产生困难

//for循环配合goto打印九九乘法表

package main

import "fmt"

func main() {
    for m := 1; m < 10; m++ {
        n := 1

        LOOP: if n <= m {
            fmt.Printf("%dx%d=%2d ",n,m,m*n)
            n++
            goto LOOP
        } else {
            fmt.Println("")
        }
    } 
}