Range(范围)
range关键字的存在为迭代提供了很大的便利,可以通过for-range循环来迭代array、slice、map、string、struct等集合类型的数据类型。
基本使用原理
切片迭代
nums := []int{1,2,3}
for k, v := range nums {
fmt.Println(k, v)
}
//其中k为切片索引,v为对应的切片元素值
我们也可以省略遍历value,通过num[key]通过数组下标随机搜索到该元素。
for k, _ := range nums{}
map迭代
kvs := map[string]string{
"a":"a",
"b":"b",
}
for k, v := range kvs {
fmt.Println(k, v)
}
需要注意的是:从Go1开始,遍历的起始节点是随机的了
字符串迭代
for k, v := range "hello"{
//这里的单个字符是对应的ASCII码值
fmt.Printf("%d,%c",k, v)
}
结构体迭代
ex := []struct{
int
string
}{
{1,"a"},
{2,"b"},
}
for k, v := range ex {
fmt.Println(k, v)
}
需要注意的是:由于在循环开始前的时候循环次数已经确定,迭代过程中添加新的元素无法迭代到
总结&&Tips
range可以用于for循环遍历array、slice、map、string、struct所有涉及的元素。- 通过
range遍历到的index和value是对应值的拷贝,改变value的值是无法对目标元素的值进行修改的。
本文详细介绍了Go语言中range关键字在遍历array、slice、map、string和结构体时的用法,强调了其在不同数据类型中的应用以及注意事项,如遍历顺序和value的拷贝特性。
894

被折叠的 条评论
为什么被折叠?



