Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 62.7MB ·虚拟内存 1299.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Go语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。它的返回值有2个,在数组和切片中它返回元素的索引和索引对应的值,在map中返回 key-value 对。
package main import "fmt" func main() { //这是我们使用range去求一个slice的和。使用数组跟这个很类似 nums := []int{2, 3, 4} sum := 0 for _, num := range nums { sum += num } fmt.Println("sum:", sum) //在数组上使用range将传入index和值两个变量。上面那个例子我们不需要使用该元素的序号,所以我们使用空白符"_"省略了。有时侯我们确实需要知道它的索引。 for i, num := range nums { if num == 3 { fmt.Println("index:", i) } } //range也可以用在map的键值对上。 kvs := map[string]string{"a": "apple", "b": "banana"} for k, v := range kvs { fmt.Printf("%s -> %s\n", k, v) } //range也可以用来枚举字符串。第一个参数是字符的索引,第二个是字符(Unicode的值)。 for i, c := range "go" { fmt.Println(i, c) } }
以上范例运行输出结果为:
sum: 9 index: 1 a -> apple b -> banana 0 103 1 111
range 迭代过程中的返回值是集合中对应元素的值拷贝,因此对元素所做的任何修改都不会影响到集合中原有的值。
package main import "fmt" type Data struct { Index int Num int } func main() { var slice []Data slice = append(slice,Data{Index:1,Num:1}) slice = append(slice,Data{Index:2,Num:2}) for _, v := range slice { v.Num += 100 } for _,v := range slice{ fmt.Println("Index:",v.Index," Num:",v.Num) } } 得到的结果是: Index:1 Num:1 Index:2 Num:2
Go语言 集合(map):map 又称作字典、哈希表或者映射,它是一种使用频率很高的数据结构。Go语言将 map 作为内置类型。map 是一种无序的键值对(key-value)的集合,可以通过键 key 快速检索到对应的数据值 value。