21. range用法

range是一个内置函数。可以遍历数组、切片slice、字典map。
当遍历数组和切片的时候,返回的是索引和元素。
当遍历字典的时候,返回字典的键和值。

//range遍历切片的所有元素,并求和
    fibo := []int{2,3,5,8,13,34,55}
    sum := 0
    for index, num := range fibo {
        sum += num
        fmt.Println(index, num, sum)
    }
    fmt.Println("sum:", sum)

如果你不需要 range 返回的某个值,比如 index,你可以把它写成 _ ,这个就可以忽略这个返回值了。

//range遍历切片的所有元素,并求和
    fibo := []int{2,3,5,8,13,34,55}
    sum := 0
    for _, num := range fibo {
        sum += num
        fmt.Println(num, sum)
    }
    fmt.Println("sum:", sum)

range还可以遍历字符串

//range遍历字符串,返回字符索引和Unicode编码。
    for i, c := range "go"{
        fmt.Printf("%d, %c\n", i, c)
    }

map 字典也是可以使用 range 遍历的

//range遍历字典,返回键值对。
    kvs := map[string]string{"a":"apple", "b":"banana", "c":"cofox"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }

还是把完整代码拿出来看一下吧。

package main

import (
    "fmt"
)

func main() {
    //range遍历切片的所有元素,并求和
    fibo := []int{2,3,5,8,13,34,55}
    sum := 0
    for _, num := range fibo {
        sum += num
        fmt.Println(num, sum)
    }
    fmt.Println("sum:", sum)

    //range遍历字符串,返回字符索引和Unicode编码。
    for i, c := range "go"{
        fmt.Printf("%d, %c\n", i, c)
    }

    //range遍历字典,返回键值对。
    kvs := map[string]string{"a":"apple", "b":"banana", "c":"cofox"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }
}

运行结果如下

2 2
3 5
5 10
8 18
13 31
34 65
55 120
sum: 120
0, g
1, o
a -> apple
b -> banana
c -> cofox
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容