首页 > 其他分享 >Go 快速入门指南 - range 遍历

Go 快速入门指南 - range 遍历

时间:2022-12-24 18:39:30浏览次数:43  
标签:do 遍历 val go range something key Go

概述

Go 特有的一种的遍历结构。它可以遍历任何一个 ​​集合(字符串、数组、切片、Map、通道等)​​​。语法上类似主流编程语言中的 ​​foreach​​ 语句,但可以获得每次遍历对应的索引。

语法规则

// key 和 val 也可以使用别的变量名称,比如 index, item 等
for key, val := range collection {
// do something
}

遍历规则

其中,​​key​​ 和 ​​val​​ 都可以使用 空白标识符 省略,具体规则如下:

  • • 如果 ​​key​​ 和 ​​val​​ 都保留,那么在循环体中必须使用这 2 个变量,语法如下:
for key, val := range collection {
// do something
}
  • • 如果省略 ​​val​​, 不需要 空白标识符,语法如下:
for key := range collection {
// do something
}
  • • 如果省略 ​​key​​, 则 key 的位置需要 空白标识符,语法如下:
for _, val := range collection {
// do something
}
  • • 如果 ​​key​​ 和 ​​val​​ 全部省略,那么只执行循环体中的代码,语法如下:
for _, _ = range collection {
// do something
}

遍历字符串

key, val 都保留

package main

import "fmt"

func main() {
str := "hello"
for key, val := range str {
fmt.Printf("key = %d, val = %c\n", key, val)
}
}

// $ go run main.go
// 输出如下
/**
key = 0, val = h
key = 1, val = e
key = 2, val = l
key = 3, val = l
key = 4, val = o
*/

省略 key

package main

import "fmt"

func main() {
str := "hello"
for _, val := range str {
fmt.Printf("val = %c\n", val)
}
}

// $ go run main.go
// 输出如下
/**
val = h
val = e
val = l
val = l
val = o
*/

省略 val

package main

import "fmt"

func main() {
str := "hello"
for key := range str {
fmt.Printf("key = %d\n", key)
}
}

// $ go run main.go
// 输出如下
/**
key = 0
key = 1
key = 2
key = 3
key = 4
*/

key, val 都省略

package main

func main() {
str := "hello"
for _, _ = range str {
println("do something")
}
}

// $ go run main.go
// 输出如下
/**
do something
do something
do something
do something
do something
*/

小结

本小节只使用 ​​字符串​​​ 作为演示,对于其他的数据结构 (数组、切片、Map、通道等), ​​range​​​ 语法都差不多。后面介绍其他数据结构时,会附加使用 ​​range​​ 遍历操作的内容。

Go 快速入门指南 - range 遍历_Go

标签:do,遍历,val,go,range,something,key,Go
From: https://blog.51cto.com/u_15915979/5967420

相关文章

  • Go 快速入门指南 - 可见性和作用域
    可见性包通过 ​​导出​​ 机制控制 变量、结构体、函数 等数据可见性。只有1个简单的规则: 首字母大写,可导出,首字母小写,不可导出。 也就是说,Go的访问控制只有两......
  • Go 快速入门指南 - 数组
    概述​​数组​​​ 是具有相同数据类型的一组长度固定的数据项序列,分配在连续的内存地址上。其中数据类型可以是整型、布尔型等基础数据类型,也可以是自定义数据类型。 ​......
  • Go 快速入门指南 - 切片
    概述阅读本小节之前,建议先阅读 数组 小节。​​切片​​ 是对数组的一个连续片段的引用。片段可以是整个数组,也可以是数组的一部分(例如数组的第3个元素到第8个元素......
  • Go 快速入门指南 - 字符切片
    概述建议先阅读 ​​字符串​​, 切片 两个小节。由于字符串不可变,如果每次以 ​​重新赋值​​​ 的方式改变字符串,效率会非常低,这时应该使用 ​​[]byte​​ 类型,[......
  • Go 快速入门指南 - Map
    概述​​Map​​​ 是一种键值对的无序集合,在其他编程语言中也被称为 ​​字典​​​, ​​Hash​​​, ​​关联数组​​。重要的一点是: ​​Map键​​ 的数据类型......
  • Go 快速入门指南 - 有序 Map
    概述​​Map​​​ 的遍历是无序的,这意味着不能依赖遍历的键值顺序。如果想实现Map遍历时顺序永远一致,一个折中的方案时预先给Map的 ​​键​​ 排序,然后根据排序后......
  • Go 快速入门指南 - make 和 new
    概述​​new()​​ 函数为数据类型T分配一块内存,初始化为类型T的零值,返回类型为指向数据的指针,可以用于所有数据类型。​​make()​​​ 函数除了为数据类型T分配内......
  • Go 快速入门指南 - 变长参数和指针参数
    变长参数在函数的最后一个参数的数据类型之前加上省略号 ​​...​​​ ,表示该参数的数据类型是 ​​变长类型​​​,调用该函数时可以传递任意数量 ​​(0-N)​​......
  • Go 快速入门指南 - defer 函数
    概述一个 ​​defer​​ 语句就是一个普通的函数或方法调用。 ​​defer​​ 语句保证了不论是在正常情况下(return返回),还是非正常情况下(发生错误,程序终止),函数......
  • Go 快速入门指南 - panic/recover 函数
    panic​​panic​​​ 会终止程序并退出,因此只有在发生严重的错误时才会使用 ​​panic​​。例子主动触发packagemainfuncmain(){panic("someerror...")}//$go......