range 关键字概述

前言

在Go中,range关键字用于迭代数组、切片、映射、通道等数据结构,使遍历操作更加方便。

内容

遍历数组

在Go语言中,使用range关键字遍历数组是一种常见且有用的操作。以下是一个示例:

go 复制代码
package main

import "fmt"

func main() {
    // 创建一个整数数组
    numbers := [5]int{10, 20, 30, 40, 50}

    // 使用range关键字遍历数组
    fmt.Println("遍历数组:")
    for index, value := range numbers {
        fmt.Printf("索引 %d 的值是 %d\n", index, value)
    }
}

运行结果:

bash 复制代码
遍历数组:
索引 0 的值是 10
索引 1 的值是 20
索引 2 的值是 30
索引 3 的值是 40
索引 4 的值是 50

在上述示例中,我们创建了一个包含 5 个整数的数组,并使用range遍历它。range返回两个值,分别是当前元素的索引和值。

索引和值

  • index代表当前元素的索引
  • value代表当前元素的值。

你可以根据需要使用这两个值。如果选择忽视,则可以用 _ 代替。

比如:

go 复制代码
package main

import "fmt"

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

遍历切片

切片是Go中常用的数据结构之一,使用range关键字可以轻松遍历切片。

go 复制代码
package main

import "fmt"

func main() {
    // Create a string slice
    fruits := []string{"apple", "banana", "orange", "grape"}

    // Iterate through the slice using range
    for index, fruit := range fruits {
        fmt.Printf("Index %d: %s\n", index, fruit)
    }
}

运行结果:

bash 复制代码
Index 0: apple
Index 1: banana
Index 2: orange
Index 3: grape

在这个示例中,我们创建了一个字符串切片fruits,然后使用rangefor循环中遍历它。同样的,range关键字返回两个值:索引和切片中当前索引位置的元素值。我们将索引和水果名称打印出来,以展示遍历切片的效果。

遍历映射

映射(Map)是Go中用于存储键值对的数据结构。使用range关键字可以遍历映射中的键值对。

go 复制代码
package main

import "fmt"

func main() {
    // 创建一个映射
    grades := map[string]int{
        "Alice": 95,
        "Bob":   88,
        "Carol": 72,
    }

    // 使用range关键字遍历映射
    fmt.Println("遍历映射:")
    for name, score := range grades {
        fmt.Printf("%s 的分数是 %d\n", name, score)
    }
}

运行结果:

bash 复制代码
遍历映射:
Carol 的分数是 72
Alice 的分数是 95
Bob 的分数是 88

在上述示例中,我们创建了一个映射,将学生的名字映射到他们的分数。同样的,使用range关键字遍历映射时,range会返回两个值,分别是当前键和对应的值。name代表当前键(学生的名字),score代表当前键对应的值(分数)。

总结

可以看到,range关键字是一个强大的工具,可以用于遍历数组、切片、映射等各种数据结构,很常见也很实用,当我们能够理解和运用好用range关键字后,可以提高Go语言编程的效率和便捷性。

相关推荐
慕城南风2 小时前
Go语言中的defer,panic,recover 与错误处理
golang·go
桃园码工1 天前
1-Gin介绍与环境搭建 --[Gin 框架入门精讲与实战案例]
go·gin·环境搭建
云中谷1 天前
Golang 神器!go-decorator 一行注释搞定装饰器,v0.22版本发布
go·敏捷开发
苏三有春2 天前
五分钟学会如何在GitHub上自动化部署个人博客(hugo框架 + stack主题)
git·go·github
我是前端小学生2 天前
Go语言中的方法和函数
go
探索云原生2 天前
在 K8S 中创建 Pod 是如何使用到 GPU 的: nvidia device plugin 源码分析
ai·云原生·kubernetes·go·gpu
自在的LEE3 天前
当 Go 遇上 Windows:15.625ms 的时间更新困局
后端·kubernetes·go
Gvto4 天前
使用FakeSMTP创建本地SMTP服务器接收邮件具体实现。
go·smtp·mailtrap
白泽来了4 天前
【Go进阶】手写 Go websocket 库(一)|WebSocket 通信协议
开源·go
witton4 天前
将VSCode配置成Goland的视觉效果
ide·vscode·编辑器·go·字体·c/c++·goland