range函數(shù)是個(gè)神奇而有趣的內(nèi)置函數(shù),你可以使用它來遍歷數(shù)組,切片和字典。
當(dāng)用于遍歷數(shù)組和切片的時(shí)候,range函數(shù)返回索引和元素;
當(dāng)用于遍歷字典的時(shí)候,range函數(shù)返回字典的鍵和值。
package main
import "fmt"
func main() {
// 這里我們使用range來計(jì)算一個(gè)切片的所有元素和
// 這種方法對(duì)數(shù)組也適用
nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
fmt.Println("sum:", sum)
// range 用來遍歷數(shù)組和切片的時(shí)候返回索引和元素值
// 如果我們不要關(guān)心索引可以使用一個(gè)下劃線(_)來忽略這個(gè)返回值
// 當(dāng)然我們有的時(shí)候也需要這個(gè)索引
for i, num := range nums {
if num == 3 {
fmt.Println("index:", i)
}
}
// 使用range來遍歷字典的時(shí)候,返回鍵值對(duì)。
kvs := map[string]string{"a": "apple", "b": "banana"}
for k, v := range kvs {
fmt.Printf("%s -> %s\n", k, v)
}
// range函數(shù)用來遍歷字符串時(shí),返回Unicode代碼點(diǎn)。
// 第一個(gè)返回值是每個(gè)字符的起始字節(jié)的索引,第二個(gè)是字符代碼點(diǎn),
// 因?yàn)镚o的字符串是由字節(jié)組成的,多個(gè)字節(jié)組成一個(gè)rune類型字符。
for i, c := range "go" {
fmt.Println(i, c)
}
}