gpt4 book ai didi

戈朗 :which way is more efficient about using "for range"

转载 作者:数据小太阳 更新时间:2023-10-29 03:46:41 24 4
gpt4 key购买 nike

type path []byte

func (p path) ToUpper() {
for i, b := range p {
if 'a' <= b && b <= 'z' {
p[i] = b + 'A' - 'a'
}
}
}

在上面(这个例子是从“The Go Blog”复制过来的),如果ToUpper变成这样:

func (p path) ToUpper() {
for i, _ := range p {
if 'a' <= p[i] && p[i] <= 'z' {
p[i] = p[i] + 'A' - 'a'
}
}
}

哪个会更有效率

为什么?

“The Go Blog”对前一个说:“这里的 ToUpper 方法在 for range 构造中使用两个变量来捕获索引和 slice 元素。这种形式的循环避免了在主体中多次写入 p[i]。”

什么意思?

最佳答案

前者有更多的内存操作,即在b上:它在循环的第一次运行时分配,除了i and 原始 slice 被修改,而在第二个示例中,只有 i 被分配和重新分配并用于对原始 slice 进行修改。

关于戈朗 :which way is more efficient about using "for range",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34838862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com