教程 > Go 教程 > Go 基础 阅读:195

Go 语言Range关键字详解

Go 语言还引入了另一个关键字 range 帮助我们快速遍历数组、切片、哈希表以及 Channel 等集合类型。

range 的使用非常简单,对于遍历array,*array,string它返回两个值,分别是数据的索引和值;遍历map时返回的两个值分别是key和value;遍历channel时,则只有一个返回数据。

首先我们看一个for循环的示例

package main

import "fmt"

func main() {
    arr := [...]float64{67.7, 89.8, 21, 78}
    for i := 0; i < len(arr); i++ {
        fmt.Printf("arr 的第 %d 个元素是:%.2f\n", i, arr[i])
    }
}

上述代码执行结果如下

arr 的第 0 个元素是:67.70
arr 的第 1 个元素是:89.80
arr 的第 2 个元素是:21.00
arr 的第 3 个元素是:78.00

Go 通过使用循环的 range 形式提供了一种更好、更简洁的方法来迭代数组。range返回索引和该索引处的值。让我们使用 range 重写上面的代码。

package main

import "fmt"

func main() {
    arr := [...]float64{67.7, 89.8, 21, 78}
    sum := float64(0)
    for i, v := range arr { //range 返回每一行的索引和值
        fmt.Printf("arr 的第 %d 个元素是:%.2f\n", i, v)
        sum += v
    }
    fmt.Println("\narr中所有元素的和为:", sum)
}

运行示例

上述代码的执行结果如下

arr 的第 0 个元素是:67.70
arr 的第 1 个元素是:89.80
arr 的第 2 个元素是:21.00
arr 的第 3 个元素是:78.00

arr中所有元素的和为: 256.5

如果我们只需要值,希望忽略索引,那么可以通过用 _ 空白标识符替换索引来实现。

for _, v := range a { // 忽略索引
}

上面的 for 循环忽略了索引。同样,值也可以忽略。

for index, _ := range a { // 忽略值
}

查看笔记

扫码一下
查看教程更方便