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语言编程的效率和便捷性。

相关推荐
我的golang之路果然有问题12 小时前
速成GO访问sql,个人笔记
经验分享·笔记·后端·sql·golang·go·database
M1A116 小时前
云原生第一步:Windows Go环境极速配置
后端·go
纪元A梦18 小时前
华为OD机试真题——推荐多样性(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
K8sCat1 天前
Golang与Kafka的五大核心设计模式
后端·kafka·go
孔令飞1 天前
Go:终于有了处理未定义字段的实用方案
人工智能·云原生·go
唐僧洗头爱飘柔95271 天前
(Go Gin)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
后端·golang·go·restful·gin·goweb开发
ん贤1 天前
并发编程【深度解剖】
后端·go·并发
我的golang之路果然有问题2 天前
快速上手GO的net/http包,个人学习笔记
笔记·后端·学习·http·golang·go·net
用户16849371443112 天前
通过 goat 工具对 golang 应用进行增量代码的埋点和监控
go
旅人CS2 天前
用Go语言理解单例设计模式
设计模式·go