Golang 语言范围(Range)

Golang(通常简称为Go)语言中的范围(Range)是一个关键字,它用于在for循环中迭代数组(array)、切片(slice)、映射(map)、字符串(string)或通道(channel)的元素。Range提供了简洁的语法来遍历这些集合类型的所有元素,并可以同时获取元素的索引(或键)和值(对于映射和通道,则为键和值)。

基本用法

  1. 在数组和切片上使用Range

    • Range在数组和切片上迭代时,返回每个元素的索引和值。
    • 示例代码:
      
      nums := []int{1, 2, 3, 4}
      for index, value := range nums {
       fmt.Printf("Index: %d, Value: %d\n", index, value)
      }
      
  2. 在映射上使用Range

    • Range在映射上迭代时,返回每个键值对的键和值。需要注意的是,从Go 1开始,映射的迭代顺序是不确定的。
    • 示例代码:
      
      person := map[string]int{"Alice": 25, "Bob": 30, "Charlie": 35}
      for key, value := range person {
       fmt.Printf("Key: %s, Value: %d\n", key, value)
      }
      
  3. 在字符串上使用Range

    • Range在字符串上迭代时,返回每个字符的索引(实际上是Unicode码点的索引)和字符本身(以rune类型表示,即Unicode码点)。
    • 示例代码:
      
      for index, char := range "hello" {
       fmt.Printf("Index: %d, Char: %c\n", index, char)
      }
      
  4. 在通道上使用Range

    • Range在通道上迭代时,会阻塞等待通道中的数据,直到通道被关闭。然后,它会遍历通道中的所有值,直到通道为空。
    • 示例代码:
      
      messages := make(chan string, 2)
      messages <- "Hello"
      messages <- "World"
      close(messages)
      for message := range messages {
       fmt.Println(message)
      }
      

注意事项

  • 忽略返回值:如果你不需要Range返回的索引或值,可以使用下划线_来忽略它。
  • 切片与数组的区别:虽然Range在数组和切片上的用法相似,但它们在内存分配和传递方式上有所不同。数组是固定长度的,其大小是类型的一部分,且是值传递;而切片是可变长度的,基于数组,是引用传递。
  • 映射的迭代顺序:映射的迭代顺序在Go中是不确定的,这意呀着在多次迭代同一个映射时,元素的顺序可能会不同。
  • 字符串的迭代:在迭代字符串时,Range返回的是字符的Unicode码点和索引,而不是字节索引和字节值。这对于处理多字节字符(如UTF-8编码的字符)特别有用。

Range是Go语言中一个非常有用的特性,它简化了集合类型的迭代过程,使得代码更加清晰和简洁。

推荐主页
George Soros 乔治·索罗斯 Benjamin Graham 本杰明·格雷厄姆 John Templeton 约翰·邓普顿 Peter Lynch 彼得·林奇 Warren Buffett 沃伦·巴菲特 GoPay Raycast Nintendo Meta 美联储 美式期权 美股做空 美股投资 美股开户 投资美国 分析方法 CTA策略 期货基础知识 基金基础知识 股票术语 交易策略 金融指数 金融市场 交易所 股票基础 投资基础 多多招商团长 多多团长 多多买菜 请假条模板 猪粪烘干机 小型鸡粪烘干机 上海到吴忠物流专线 上海到中卫物流专线 上海到固原物流专线 上海到银川物流专线 上海到宁夏物流专线 知乎seo 拼多多团长 自学做网站 学做网站 华为 OpenAI 马斯克 三星 Go语言 Golang Golang语言 小红书带货笔记 小红书带货 wordpress教程 WordPress建站服务器 WordPress建站教程 WordPress建站服务 WordPress建站公司 小红书笔记带货 抖音客服 抖音视频 抖音软件 快手商家 快手极速版 快手网页版 抖音蓝v 抖音创作者服务中心 抖音创作者服务平台 抖音创作中心 抖音下载安装 58同城 抖音订单 抖音网页创作者中心 抖音网页版 番茄小说 抖音短视频 抖音创作者中心 抖音创作服务平台 抖音官网 抖音极速版 抖音直播 抖音下载 短视频IP孵化厂家 短视频IP孵化 快手电商 短视频IP 小红书推广 微信支付 宝塔软件 宝塔 wordpress模板 linux 云服务器 wordpress安装 阿里云建站 阿里云服务器 阿里云播放器 云虚拟主机