1. go语言中的range
1.1 array
words := []string{"Go", "语言", "高性能", "编程"}
for i, s := range words {
words = append(words, "test")
fmt.Println(i, s)
}
/*结果
0 Go
1 语言
2 高性能
3 编程
*/
- 变量 words 在循环开始前,仅会计算一次,如果在循环中修改切片的长度不会改变本次循环的次数。所以上面例子中的“test”将不会在本次循环中进行输出。
- 迭代过程中,每次迭代的下标和值被赋值给变量 i 和 s,第二个参数 s 是可选的。
- 针对 nil 切片,迭代次数为 0。
除此之外,range 还有另一种只遍历下标的写法,这种写法与 for 几乎没什么差异了。
for i := range words {
fmt.Println(i, words[i])
} //该方法仅仅只遍历输出下标
/*结果
0 Go
1 语言
2 高性能
3 编程
*/
1.2 map
m := map[string]int{
"one": 1,
"two": 2,
"three": 3,
}
for k, v := range m {
delete(m, "two")
m["four"] = 4