Go by Example: Range

来自泡泡学习笔记
BrainBs讨论 | 贡献2024年3月7日 (四) 09:04的版本 (创建页面,内容为“ range 用于遍历多种数据结构中的元素。 在这里,我们使用 range 对切片中的数字求和。数组也可以这样操作。 在数组和切片上使用 range 可以同时提供每个元素的索引和值。在上面的示例中,我们不需要索引,所以用空白标识符 _ 忽略了它。但有时候我们确实需要索引。 在 map 上使用 range 可以遍历键值对。 range 还可以仅遍历 map 的键。 在字符串上…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

range 用于遍历多种数据结构中的元素。

在这里,我们使用 range 对切片中的数字求和。数组也可以这样操作。

在数组和切片上使用 range 可以同时提供每个元素的索引和值。在上面的示例中,我们不需要索引,所以用空白标识符 _ 忽略了它。但有时候我们确实需要索引。

在 map 上使用 range 可以遍历键值对。

range 还可以仅遍历 map 的键。

在字符串上使用 range 可以遍历 Unicode 码位。第一个值是 rune 的起始字节索引,第二个值是 rune 本身。

package main

import "fmt"

func main() {

    nums := []int{2, 3, 4}
    sum := 0
    for _, num := range nums {
        sum += num
    }
    fmt.Println("sum:", sum)

    for i, num := range nums {
        if num == 3 {
            fmt.Println("index:", i)
        }
    }

    kvs := map[string]string{"a": "apple", "b": "banana"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }

    for k := range kvs {
        fmt.Println("key:", k)
    }

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


$ go run range.go
sum: 9
index: 1
a -> apple
b -> banana
key: a
key: b
0 103
1 111