go语音中range 循环

简介: go语音中range 循环

在 Go 语言中,range 是一个用于遍历数组、切片、字符串、映射(map)或通道(channel)的关键词。使用 range 可以简化循环中的迭代操作,使代码更加简洁易读。

遍历数组或切片

当使用 range 遍历数组或切片时,range 会返回每个元素的索引和值。如果你只对值感兴趣,可以使用下划线 _ 忽略索引。

package main

import "fmt"

func main() {
   
    numbers := []int{
   1, 2, 3, 4, 5}

    // 使用索引和值
    for index, value := range numbers {
   
        fmt.Printf("Index: %d Value: %d\n", index, value)
    }

    // 只使用值
    for _, value := range numbers {
   
        fmt.Println(value)
    }
}

遍历字符串

遍历字符串时,range 返回的是每个字符的字节索引及其对应的 Unicode 码点(rune)。

package main

import "fmt"

func main() {
   
    str := "Hello, 世界"

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

遍历映射(map)

遍历映射时,range 返回键值对。你可以选择忽略不需要的部分。

package main

import "fmt"

func main() {
   
    ages := map[string]int{
   "Alice": 30, "Bob": 25, "Charlie": 35}

    // 使用键和值
    for key, value := range ages {
   
        fmt.Printf("Key: %s Value: %d\n", key, value)
    }

    // 只使用键
    for key := range ages {
   
        fmt.Println(key)
    }
}

遍历通道(channel)

遍历通道时,range 会持续接收通道中的值,直到通道关闭。

package main

import "fmt"

func main() {
   
    ch := make(chan int)

    go func() {
   
        for i := 0; i < 5; i++ {
   
            ch <- i
        }
        close(ch) // 关闭通道
    }()

    // 使用值
    for value := range ch {
   
        fmt.Println(value)
    }
}

以上是 Go 语言中使用 range 进行循环的基本示例。根据不同的数据类型,range 提供了灵活且强大的遍历机制。

目录
相关文章
|
7月前
|
Go
Go 1.22 for 循环的两处重要更新
本文介绍了 Go 1.22 版本对 for 循环所做的两处重要更新:循环的每次迭代都会创建新变量 和 循环支持对整数范围进行迭代。 - 循环的每次迭代都会创建新变量,有效避免了以往版本中常见的闭包陷阱,提高了代码的安全性和可预测性。 - 循环支持对整数范围进行迭代,极大地增强了 for 循环的灵活性,使得编写计数循环更加直接和简洁。
107 1
Go 1.22 for 循环的两处重要更新
|
Cloud Native Go 索引
GO 的 range 如何使用?
GO 的 range 如何使用?
|
安全 Go 索引
Go切片循环就用range 有这一篇就够了
Go切片循环就用range 有这一篇就够了
365 0
|
2月前
|
Go 索引
go基础-6.for循环
go基础-6.for循环
|
6月前
|
Go 索引
Go 语言范围(Range)
Go 语言范围(Range)
32 0
|
7月前
|
Go
go 判断两棵树内容是否一致
go 判断两棵树内容是否一致
45 0
|
安全 Go 索引
Go的slice机制
在Go语言中,slice是一种可变长度的序列,它可以动态地增长或缩小其容量。
90 0
|
存储 算法 Java
Go源代码解析-slice.go文件
Go源代码解析-slice.go文件
83 0
|
Go 调度
go 的 for range 的坑
在使用 for range 时会出现让人意想不到的结果,比如输出的结果并非是每次的更新结果。到底是什么原因,可以详细看下其中的内容。
150 0