首页 > 其他分享 >Go语言中的range

Go语言中的range

时间:2024-10-24 14:32:13浏览次数:6  
标签:Index 遍历 语言 fmt value range Go main

在Go语言中,range 是一个用于遍历各种数据结构(如数组、切片、字符串、map 和通道)的关键字。range 可以返回一个索引和值,或者是键和值,具体取决于你遍历的是什么类型的数据结构。

1. range 的用法

range 常用于 for 循环,来遍历集合中的元素。它可以遍历数组、切片、字符串、map、甚至是 channel(通道)。每次迭代,range 会返回两个值:第一个值是索引或键,第二个值是元素本身。

基本语法:

for index, value := range collection {
    // 使用 index 和 value
}

如果你不需要索引或键,可以使用下划线 _ 来忽略它们。

2. range 遍历数组和切片

使用 range 遍历数组和切片时,返回的第一个值是索引,第二个值是数组或切片中对应索引位置的元素值

示例:

package main

import "fmt"

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

输出:

Index: 0, Value: 2
Index: 1, Value: 3
Index: 2, Value: 4

如果你只关心数组或切片中的值,可以忽略索引:

for _, value := range nums {
    fmt.Println(value)
}

3. range 遍历字符串

遍历字符串时,range 返回的是每个字符的索引Unicode代码点(rune)

示例:

package main

import "fmt"

func main() {
    str := "hello"
    
    for index, char := range str {
        fmt.Printf("Index: %d, Character: %c\n", index, char)
    }
}

输出:

Index: 0, Character: h
Index: 1, Character: e
Index: 2, Character: l
Index: 3, Character: l
Index: 4, Character: o

4. range 遍历 map

遍历 map 时,range 返回的第一个值是,第二个值是键对应的值

示例:

package main

import "fmt"

func main() {
    fruits := map[string]string{"a": "apple", "b": "banana"}
    
    for key, value := range fruits {
        fmt.Printf("Key: %s, Value: %s\n", key, value)
    }
}

输出:

Key: a, Value: apple
Key: b, Value: banana

5. range 遍历通道(channel)

range 也可以用于遍历通道,前提是该通道是关闭的,否则它会一直阻塞等待新数据。range 会从通道中接收数据,直到通道被关闭。

示例:

package main

import "fmt"

func main() {
    ch := make(chan int, 2)
    ch <- 1
    ch <- 2
    close(ch)  // 关闭通道

    for value := range ch {
        fmt.Println(value)
    }
}

输出:

1
2

6. 忽略返回值

如果你只需要索引或键,或者只需要值,可以用下划线 _ 忽略不需要的部分。例如:

for _, value := range nums {  // 忽略索引,只关心值
    fmt.Println(value)
}

for index := range nums {  // 忽略值,只关心索引
    fmt.Println(index)
}

7. range 遍历多维数组

range 也可以用于遍历多维数组或切片。每次遍历返回的是子数组或子切片。

示例:

package main

import "fmt"

func main() {
    matrix := [][]int{
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
    }

    for _, row := range matrix {
        for _, value := range row {
            fmt.Printf("%d ", value)
        }
        fmt.Println()
    }
}

输出:

1 2 3 
4 5 6 
7 8 9 

8. 总结

  • range 是 Go 语言中用于遍历集合(数组、切片、map、字符串和通道)的关键字。
  • 它每次返回两个值:索引(或键)。你可以根据需要选择是否忽略某些返回值。
  • 通过 range,Go 提供了一种简单而强大的方式来遍历各种数据结构。

标签:Index,遍历,语言,fmt,value,range,Go,main
From: https://www.cnblogs.com/niumachen/p/18499553

相关文章

  • python编程语言实现身份证实名认证?身份证查询接口
    互联网的便利性犹如一把双刃剑,在给人们带来便利的同时,也滋生了网络诈骗、网络水军等影响网络健康、安全的隐患。为了更好地监管网络安全,建设绿色、健康的网络环境,互联网平台软件均开始实行实名认证,下面以翔云身份证实名认证接口为例。翔云身份证实名认证接口,实时联网,......
  • MT1371-MT1380 码题集 (c 语言详解)
    目录        MT1371·所有路径        MT1372·矩阵清零        MT1373·亲和数         MT1374·Pronic数         MT1375·4和7的序列        MT1376·小码哥的数学        MT1377·模乘逆元      ......
  • 【NLP自然语言处理】Attention机制原理揭秘:赋予神经网络‘聚焦’与‘理解’的神奇力量
    目录......
  • Golang 中使用 JSON 的一些小技巧
    临时忽略struct字段typeUserstruct{Emailstring`json:"email"`Passwordstring`json:"password"`//manymorefields…}临时忽略掉Password字段json.Marshal(struct{*UserPasswordbool`json:"password,omitempty"`}{Us......
  • 什么是 SAP ABAP 的 Logon Procedure?
    SAPABAP系统的LogonProcedure(登录过程)是SAP系统中用于管理用户如何连接到系统并访问相关功能与数据的一套复杂流程与验证机制。通过这一登录过程,SAP系统可以确保用户访问的安全性、审计记录的完整性,并有效地管理用户的权限和身份认证。作为企业级信息系统的重要组成......
  • linux shell 脚本语言教程(超详细!)
    Shell编程详细指南什么是Shell?Shell是用户与操作系统内核之间的接口,允许用户通过命令行输入来控制操作系统。它充当命令解释器,读取用户输入的命令并执行相应的操作。Shell提供了强大的脚本编程能力,可以自动化许多任务。常见的Shell有Bash(BourneAgainShell)、Zsh(ZShell)......
  • 怎么搭建图片转文本GOT-OCR2.0
    Github地址http://gitlab.xiaoxingcloud.com/ai/GOT-OCR2.0.git介绍GOT-OCR2.0是一款用于图片转文字开源软件环境查看系统环境#lsb_release-aNoLSBmodulesareavailable.DistributorID: UbuntuDescription: Ubuntu22.04.5LTSRelease: 22.04Codename: jammy#......
  • 【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (四):状态码的使用
    本项目旨在学习如何快速使用nodejs开发后端api,并为以后开展其他项目的开启提供简易的后端模版。(非后端工程师)由于文档是代码写完之后,为了记录项目中需要注意的技术点,因此文档的叙述方式并非开发顺序(并非循序渐进的教学文档)。建议配合项目源码node-mongodb-template。【NodeJS......
  • 【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (五):POST上传文件的设置
    本项目旨在学习如何快速使用nodejs开发后端api,并为以后开展其他项目的开启提供简易的后端模版。(非后端工程师)由于文档是代码写完之后,为了记录项目中需要注意的技术点,因此文档的叙述方式并非开发顺序(并非循序渐进的教学文档)。建议配合项目源码node-mongodb-template。【NodeJS......
  • 【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (六):token的设置
    本项目旨在学习如何快速使用nodejs开发后端api,并为以后开展其他项目的开启提供简易的后端模版。(非后端工程师)由于文档是代码写完之后,为了记录项目中需要注意的技术点,因此文档的叙述方式并非开发顺序(并非循序渐进的教学文档)。建议配合项目源码node-mongodb-template。【NodeJS......