go语言for循环遍历切片slice、map、字符串和数组
go语言循环遍历的概念跟python的迭代遍历类似,对此有兴趣的可以参考:python迭代器,iter()函数,通关游戏实例。
for循环遍历
go语言的循环遍历主要是通过for和range的配合使用,可以用来迭代slice、map等,实例如下:
实例
package main
import "fmt"
func main() {
var a []int = []int{1, 2, 3, 4, 5}
var b map[string]int = map[string]int{"x1": 1, "y1": 2, "z1": 3}
for _, v := range a {
fmt.Println(v)
}
fmt.Println("下面是map的循环遍历")
for k, v := range b {
fmt.Printf("键为%s,值为%d \n", k, v)
}
}
代码输出:
1
2
3
4
5
下面是map的循环遍历
键为x1,值为1
键为y1,值为2
键为z1,值为3
代码解析
- 切片slice的循环当中,“_,”表示忽略,原本是索引,在go语言当中,变量声明了却不使用,会引发错误;
- 在map的循环当中,k,v分别表示键值对的键和值,即key和value的缩写;
字符串和数组可以遍历吗
python中的字符串和列表、元组之类的数据也是可以迭代遍历的,那么在go语言当中,字符串和数组是否也可以呢?我们来尝试一下:
package main
import (
"fmt"
)
func main() {
var a string = "璞玉天成,大器晚成"
for _, v := range a {
fmt.Printf("%c \n", v)
}
var b [5]int = [5]int{1, 2, 3, 4, 5}
for _, v := range b {
fmt.Println(v)
}
}
代码输出:
璞
玉
天
成
,
大
器
晚
成
1
2
3
4
5
代码解析
如上代码,遍历字符串的时候需要注意一点,就是如果只是直接打印v的话,会输出字符的unicode编码,是一串数字,如果要输出,就需要用fmt.Printf()中的%c运算符。