一、Go語言中的range
Go 語言中 range 關鍵字用於
- for迴圈中迭代數組(array)、切片(slice)、鏈表(channel)或集合(map)的元素;
- 在數組和切片中它返回元素的索引值,
- 在集合中返回 key-value 對的 key 值。
二、代碼舉例
package mainimport "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值。