• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Go语言range关键字循环时的坑

    关键字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循环与条件判断
    上一篇:Golang Mongodb模糊查询的使用示例
    下一篇:Golang数组的传递详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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