探索 Go 语言的 range 关键字

Beginner

This tutorial is from open-source community. Access the source code

简介

range 关键字用于在 Golang 的各种数据结构中迭代元素。在本实验中,我们将探索如何在不同的数据结构中使用 range

Range

本实验要解决的问题是演示如何在切片、数组、映射和字符串中使用 range

要完成本实验,你需要:

  • 具备 Golang 语法的基础知识
  • 你的机器上安装了 Golang
$ go run range.go
总和: 9
索引: 1
a - > 苹果
b - > 香蕉
键: a
键: b
0 103
1 111

以下是完整代码:

// _range_ 用于遍历各种数据结构中的元素。让我们看看如何在一些我们已经学过的数据结构中使用 `range`。

package main

import "fmt"

func main() {

    // 这里我们使用 `range` 来计算切片中数字的总和。
    // 数组的操作方式也是如此。
    nums := []int{2, 3, 4}
    sum := 0
    for _, num := range nums {
        sum += num
    }
    fmt.Println("总和:", sum)

    // 对数组和切片使用 `range` 会为每个元素提供索引和值。
    // 上面我们不需要索引,所以用下划线标识符 `_` 忽略了它。
    // 但有时我们实际上需要索引。
    for i, num := range nums {
        if num == 3 {
            fmt.Println("索引:", i)
        }
    }

    // 对映射使用 `range` 会遍历键值对。
    kvs := map[string]string{"a": "苹果", "b": "香蕉"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }

    // `range` 也可以只遍历映射的键。
    for k := range kvs {
        fmt.Println("键:", k)
    }

    // 对字符串使用 `range` 会遍历 Unicode 码点。
    // 第一个值是 `rune` 的起始字节索引,第二个值是 `rune` 本身。
    // 更多细节请参阅 [字符串和符文](strings-and-runes)。
    for i, c := range "go" {
        fmt.Println(i, c)
    }
}

总结

在本实验中,我们学习了如何在 Golang 中对切片、数组、映射和字符串使用 rangerange 关键字提供了一种遍历不同数据结构中元素的便捷方式。