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语言错误处理详解
ios·golang·go·xcode·go1.19
qq_172805593 天前
GO Govaluate
开发语言·后端·golang·go
littleschemer3 天前
Go缓存系统
缓存·go·cache·bigcache
程序者王大川4 天前
【GO开发】MacOS上搭建GO的基础环境-Hello World
开发语言·后端·macos·golang·go
Grassto4 天前
Gitlab 中几种不同的认证机制(Access Tokens,SSH Keys,Deploy Tokens,Deploy Keys)
go·ssh·gitlab·ci
高兴的才哥5 天前
kubevpn 教程
kubernetes·go·开发工具·telepresence·bridge to k8s
少林码僧6 天前
sqlx1.3.4版本的问题
go
蒙娜丽宁6 天前
Go语言结构体和元组全面解析
开发语言·后端·golang·go
蒙娜丽宁6 天前
深入解析Go语言的类型方法、接口与反射
java·开发语言·golang·go
三里清风_6 天前
Docker概述
运维·docker·容器·go