主页 > 知识库 > Go语言range关键字循环时的坑

Go语言range关键字循环时的坑

热门标签:江西转化率高的羿智云外呼系统 中国地图标注省会高清 广州呼叫中心外呼系统 西部云谷一期地图标注 地图标注的汽车标 学海导航地图标注 南通如皋申请开通400电话 浙江高速公路地图标注 高德地图标注口诀

关键字range可用于循环,类似迭代器操作,它可以遍历slice,array,string,mapchannel,然后返回索引或值。可以使用”_”来忽略不想要的返回值。可以方便的读取上面类型中的内容,例如:

package main
import "fmt"
func main() {
  str1 := []string{"1", "2", "3", "4"}
  for key, value := range str1 {
    fmt.Println(key, ":", value)
  }
}

但是如果想要改变这些类型的值,用range就可能达不到你期望的效果。例如,将上面str1中的值”2”和”4”变为”6”,使用range来进行遍历修改。

package main
import "fmt"
func main() {
  str1 := []string{"1", "2", "3", "4"}
  for _, value := range str1 {
    if value == "2" || value == "4" {
      value = "6"
    }
  }
  fmt.Println(str1)
}

你可能觉得结果会是[1 6 3 6],但执行后却是[1 2 3 4]。也就是说在range中对切片进行操作,并没有影响到切片(原切片)。

出现上述问题的原因是因为for range遍历的内容是对原内容的一个拷贝,所以不能用来修改原切片中内容。

修改方法:

使用for语句

package main
import "fmt"
func main() {
  str1 := []string{"1", "2", "3", "4"}
  for i := 0; i  len(str1); i++ {
    if str1[i] == "2" || str1[i] == "4" {
      str1[i] = "6"
    }
  }
  fmt.Println(str1)
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

您可能感兴趣的文章:
  • 手把手带你走进Go语言之循环语句
  • Go语言for range(按照键值循环)遍历操作
  • Go语言流程控制之goto语句与无限循环
  • 深入解析Go语言中for循环的写法
  • Go语言模拟while语句实现无限循环的方法
  • Go语言之fo循环与条件判断

标签:吐鲁番 保定 贵州 许昌 曲靖 常州 东营 德宏

巨人网络通讯声明:本文标题《Go语言range关键字循环时的坑》,本文关键词  语言,range,关键字,循环,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Go语言range关键字循环时的坑》相关的同类信息!
  • 本页收集关于Go语言range关键字循环时的坑的相关信息资讯供网民参考!
  • 推荐文章