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)
    }
}

 

 

如果把代碼第七行的 _ 刪除,運行結果將變為:

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

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM