range

本篇讲解 Go 关键字 range 的常见写法、返回值含义和初学者常见错误。

字数 406 字

range(关键字)

它是做什么的

range 用于“遍历集合类型”的元素,常配合 for 使用。
你会在数组、切片、字符串、map、channel 上看到它。

基本写法

1
2
3
for index, value := range data {
	// 使用 index 和 value
}

如果你只关心其中一个值,可以这样写:

1
2
3
4
5
6
7
for index := range data {
	// 只要索引/键
}

for _, value := range data {
	// 只要值,索引/键用 "_" 忽略
}

在不同类型上的返回值

  1. 数组/切片:返回 索引(index)元素值(value)
  2. 字符串:返回 字节下标(index)字符的 rune 值(value)
  3. map:返回 键(key)值(value)
  4. channel:每次返回一个接收到的值(只写一个变量更常见)。

结合数组的示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
package main

import "fmt"

func main() {
	letters := [4]string{"a", "b", "c", "d"}

	for i, v := range letters {
		fmt.Printf("index=%d value=%s\n", i, v)
	}
}

初学者容易踩坑

  1. 不想用索引时直接省略变量名会语法错误,应使用 _ 占位。
  2. 遍历 map 时顺序是不固定的,不能依赖顺序写业务逻辑。
  3. 看到字符串的 range 返回值时,误以为 valuestring;实际上它是 rune
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
载入天数...载入时分秒...
发表了 0 篇文章 · 发表了 31 篇笔记 · 总计 1 万 6 千字(其中笔记 16551 字)