Go语言中的range关键字可以用来遍历数组、切片、映射和字符串等数据结构。在循环中,range关键字返回两个值:当前元素的索引和元素值。下面我们分别介绍range关键字在不同数据结构上的使用方法。
遍历数组和切片
代码语言:javascript复制arr := [3]int{1, 2, 3}
for i, v := range arr {
fmt.Println(i, v)
}
slice := []int{4, 5, 6}
for i, v := range slice {
fmt.Println(i, v)
}
遍历映射
代码语言:javascript复制m := map[string]int{"a": 1, "b": 2, "c": 3}
for k, v := range m {
fmt.Println(k, v)
}
遍历字符串
代码语言:javascript复制s := "hello, world!"
for i, c := range s {
fmt.Printf("index: %d, character: %cn", i, c)
}
需要注意的是,在遍历字符串时,返回的索引是字符的字节位置,而不是字符在字符串中的位置。如果需要获取字符在字符串中的位置,可以将字符串转换成rune切片:
代码语言:javascript复制s := "hello, 世界!"
for i, c := range []rune(s) {
fmt.Printf("index: %d, character: %cn", i, c)
}
使用下划线忽略索引或元素值
在循环中,如果不需要使用索引或元素值,可以使用下划线忽略它们:
代码语言:javascript复制arr := [3]int{1, 2, 3}
for _, v := range arr {
fmt.Println(v)
}
m := map[string]int{"a": 1, "b": 2, "c": 3}
for k := range m {
fmt.Println(k)
}