17、Go 流程控制 - for & range 循环语句

作者: 温新

分类: 【Go基础】

阅读: 657

时间: 2023-08-21 16:05:28

hi,我是温新

循环语句是在编程中常用的语句之一,而在 Go 语句中,循环语句是 for。需要注意的是 Go 中没有 while

下面通过一个简单的案例学习 for 循环。

package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
}

语句解释:

1、初始化变量 i = 0;

2、判断 i 小于 5 时,执行输出代码;

3、i 的值加 1

for 子语句

从上面的案例中可以看到,for 后面跟着 3 个子句,分别是:初始化子语句、条件子语句、后置子语句,这三个语句之间的顺序不能颠倒。

其中条件子语句是必须的,条件子语句返回一个布尔型,结果为 true 时则执行代码块,fasle 则跳出循环。

package main

import "fmt"

func main() {
    // 初始化子语句
    x := 0
    y := 5

    // 只有条件子语句
    for x < y {
        // 后置子语句
        x++

        fmt.Println(x)
    }
}

range 子语句

range 是一个特殊的子语句,其作用类型于迭代器,用途如下:

  • 1、轮询数组或切片值中的每一个元素;
  • 2、轮询字符串中的每一个字符;
  • 3、轮休字典中的每个键值对;
  • 4、持续读取一个通道类型值中的元素。

语法形式

for key,val := range collection {
    
}

字符串案例

package main

import "fmt"

func main() {
    str := "hello 世界"

    // 方式一:key 和 value
    for key, val := range str {
        fmt.Printf("字符串第%d个字符的值为%d\n", key, val)
    }

    // 方式二:忽略 key
    for _, val := range str {
        fmt.Println(val)
    }

    // 方式三:忽略 val
    for key := range str {
        fmt.Println(key)
    }

    // 方式四:忽略全部返回值
    for range str {
        fmt.Println("执行成功")
    }
}

数组案例

package main

import "fmt"

func main() {
    arr := map[string]string{"name": "王美丽", "gender": "女"}
    for key, val := range arr {
        fmt.Println(key, val)
    }
}
请登录后再评论