一、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值。