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

相关推荐
angryshan1 小时前
goLang配置断点流程
go·bug
名字还没想好☜10 小时前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
程序员爱钓鱼13 小时前
Go 输入输出详解
后端·面试·go
朦胧之1 天前
Go 项目设计
go
名字还没想好☜1 天前
Go 的 io.Reader/Writer 组合实战:io.Copy、TeeReader、MultiWriter 优雅处理数据流
开发语言·后端·golang·go·iphone
喵个咪1 天前
GoWind Shop 架构剖析:一个 REST 请求穿越三服务 BFF 的七环链路
vue.js·后端·go
喵个咪1 天前
GoWind Shop 安全设计:JWT 鉴权、Ent 行级隔离、防篡改审计与四个真实漏洞修复
vue.js·后端·go
喵个咪1 天前
GoWind Shop:一个 proto 文件如何生成后端、前端、文档、校验六路代码
vue.js·后端·go
喵个咪1 天前
GoWind Shop 出海实战:多语言商品内容怎么存、怎么录、怎么按 locale 取
vue.js·后端·go
小满zs2 天前
Go语言第八章(函数)
后端·go