Golang中Range的使用有哪些参考资料

Golang中Range的使用有哪些参考资料 我查阅了语言规范和Go文档

3 回复

谢谢!!!我忘了 range 是 for 语句的一部分

更多关于Golang中Range的使用有哪些参考资料的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


range 关键字在规范中有详细说明:

https://golang.org/ref/spec#For_range

或者您考虑的是其他不同的内容吗?

在Go语言中,range 关键字用于迭代数组、切片、字符串、映射(map)或通道(channel)。以下是一些关键参考资料和示例代码,帮助您更好地理解其用法。

1. Go语言规范(The Go Programming Language Specification)

  • 官方规范详细定义了 range 的行为,包括在不同数据类型上的迭代方式。例如,在数组和切片上返回索引和值,在映射上返回键和值,在字符串上返回 Unicode 码点索引和 rune 值,在通道上迭代直到通道关闭。
  • 参考链接:Go Language Specification - For statements with range clause

2. Go官方文档(Go Documentation)

  • Go 标准库文档提供了实际使用 range 的示例,特别是在处理集合类型时。例如,在 fmt 包或 sort 包中常见 range 的应用。
  • 参考链接:Go Documentation - Effective Go(Effective Go 部分包含循环和 range 的指南)

示例代码:

以下是一些常见数据类型的 range 使用示例:

迭代数组或切片:

package main

import "fmt"

func main() {
    nums := []int{10, 20, 30}
    for index, value := range nums {
        fmt.Printf("Index: %d, Value: %d\n", index, value)
    }
}

输出:

Index: 0, Value: 10
Index: 1, Value: 20
Index: 2, Value: 30

迭代映射(map):

package main

import "fmt"

func main() {
    m := map[string]int{"a": 1, "b": 2}
    for key, value := range m {
        fmt.Printf("Key: %s, Value: %d\n", key, value)
    }
}

输出(顺序可能随机):

Key: a, Value: 1
Key: b, Value: 2

迭代字符串:

package main

import "fmt"

func main() {
    s := "Go"
    for index, runeValue := range s {
        fmt.Printf("Index: %d, Rune: %c\n", index, runeValue)
    }
}

输出:

Index: 0, Rune: G
Index: 1, Rune: o

迭代通道(channel):

package main

import "fmt"

func main() {
    ch := make(chan int, 2)
    ch <- 1
    ch <- 2
    close(ch) // 必须关闭通道,否则 range 会阻塞

    for value := range ch {
        fmt.Printf("Value: %d\n", value)
    }
}

输出:

Value: 1
Value: 2

这些示例覆盖了 range 的主要用法。如果您有特定场景的问题,可以进一步参考官方资源或社区论坛。

回到顶部