遍历数组,map集合,Slice切片等,Go提供比较好用的For Range方式。range是一个关键字,表示范围,和for配合使用可以迭代数组,map等集合。用法简洁,而且map、channel等也都是用for range的方式,所以在编码中我们使用for range
进行循环迭代是最多的。对于这种最常使用的迭代,尤其是和for i=0;i<N;i++
对比,性能怎么样?需要深入了解。
1. 基本用法
package main
import "fmt"
func main() {
ages:=map[string]int{"张三":15,"李四":20,"王武":36}
for name,age:=range ages{
fmt.Println(name,age)
}
}
>> 张三 15
>> 李四 20
>> 王武 36
在使用for range
迭代map的时候,返回的第一个变量是key
,第二个变量是value.
需要注意的是,for range map
返回的K-V
键值对顺序是不固定的,是随机的.
2. 与常规的for循环进行对比
比如对于 Slice 切片,我们有两种迭代方式:一种是常规的for i:=0;i<N;i++
的方式;一种是for range
的方式,下面我们看看两种迭代的性能。
func ForSlice(s []string) {
len := len(s)
for i := 0; i < len; i++ {
_, _ = i, s[i]
}
}
func RangeForSlice(s []string) {
for i, v := range s {
_, _ = i, v
}
}
为了测试,写了这两种循环迭代 Slice 切片的函数,从实现上看&#