for range的使用注意事项

(一)

1.在range中修改切片:

go 复制代码
 1 n := []int{1,2,3,4,5,6}
 2 for i, e := range n{
 3         if i == len(n)-1 {
 4                 n[0] += e
 5         } else {
 6                 n[i+1] += e
 7         }
 8 
 9 }
10 fmt.Println("n:", n)

输出:

ini 复制代码
n: [22 3 6 10 15 21]

2.在range中修改数组:

go 复制代码
 1 n := [...]int{1,2,3,4,5,6}
 2 for i, e := range n{
 3         if i == len(n)-1 {
 4                 n[0] += e
 5         } else {
 6                 n[i+1] += e
 7         }
 8 
 9 }
10 fmt.Println("n:", n)

输出:

ini 复制代码
n: [7 3 5 7 9 11]

range表达式会在for语句开始执行时被求值一次。求值的结果值被传递出来,是值传递(复制)。由于切片是引用类型,所以可以跟随变化。

(二)

go 复制代码
func str() {
        a := "你好123"
        for i, v :=  range a {
                fmt.Println("i:",i, ", v:", v)
        }
        b := []rune(a)
        fmt.Println("b:", b)

}

输出:

yaml 复制代码
i: 0 , v: 20320
i: 3 , v: 22909
i: 6 , v: 49
i: 7 , v: 50
i: 8 , v: 51
b: [20320 22909 49 50 51]

【迁移】www.cnblogs.com/zxq89/p/166... posted @ 2022-09-05 15:42

相关推荐
小满zs17 小时前
Go语言第十二章(通道)
后端·go
a1879272183117 小时前
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本
数据结构·算法·leetcode·链表·go·指针·环形链表
江湖十年1 天前
Go 虚荣域名详解:我用 go get -x 抓了个包,终于看清了 Go 工具链“对暗号”的全过程
后端·面试·go
平头哥AI1 天前
Day 22 _ 包装错误别丢链_%w、errors.Is 与 errors.As
android·服务器·学习·golang·go
王码码20352 天前
Go语言CGO:Go与C交互
后端·golang·go·接口
妙码生花2 天前
两个月 59 篇 AI 开发日志 + Golang 商业级实战项目收工后,得来的 AI 使用心法-下
前端·后端·go
平头哥AI2 天前
Day 21 _ error 是个普通值_errors.New 与 fmt.Errorf 造出来,沿调用栈抛到 main 接住
后端·学习·golang·go
HappRobot3 天前
# Go语法基础
go
Go_error3 天前
在 Go 服务层中如何优雅地管理事务?
后端·go
超级无敌霹雳大狗熊3 天前
以最小demo讲解Eino中的graph编排
go·agent