range
遍历 slice
语法格式
func main() {
nums := []int{10, 20, 30}
for i, v := range nums { // i 为下标; v 为元素值副本
println(i, v)
}
}
遍历 map
语法格式
func main() {
m := map[string]int{"a": 1, "b": 2}
for k, v := range m {
println(k, v) // map 遍历顺序不保证稳定
}
}
遍历 string
语法格式
func main() {
for i, r := range "语言" {
println(i, r) // i 为 rune 起始字节位置; r 为当前 Unicode code point
}
}
忽略返回值
语法格式
func main() {
nums := []int{1, 2, 3}
for _, v := range nums { // _ 丢弃不需要的 index
println(v)
}
}
循环变量
概念
- range value: 每轮迭代得到的是元素值副本;
- 修改元素: 需要通过 index 写回原集合;
- 地址使用: 需要区分循环变量地址和元素地址;
语法格式
func main() {
nums := []int{1, 2, 3}
for i, v := range nums {
nums[i] = v * 10 // 通过 index 修改原 slice 元素
}
}