天天看點

Go語言_range(範圍)了解

一、Go語言中的range

Go 語言中 range 關鍵字用于

  • for循環中疊代數組(array)、切片(slice)、連結清單(channel)或集合(map)的元素;
  • 在數組和切片中它傳回元素的索引值,
  • 在集合中傳回 key-value 對的 key 值。

二、代碼舉例

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字元串。第一個參數是字元的索引,第二個是字元(Unicode的值)本身。
    for i, c := range "go" {
        fmt.Println(i, c)
    }
}           

複制

Go語言_range(範圍)了解

如果把代碼第七行的 _ 删除,運作結果将變為:

Go語言_range(範圍)了解

這是因為 for _ 表示周遊數組的下标,從nums[0],nums[1],nums[2]依次開始周遊,是以最後的值為sum=2+3+4=9;但是如果把 for _ 去掉,就變成了周遊0 1 2,是以sum=0+1+2=3。

Go語言_range(範圍)了解

這段代碼中 i 表示數組小标,從0開始計數,c表示字元所對應的ASCII值,是以周遊 [hello]這個字元數組,得到了每個數組下标下的字元所對應的ASCII值。