gpt4 book ai didi

loops - 在 Go 中使用范围循环

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

如果我错了请纠正我,Go 中只有 3 种类型的循环。

Type1(最基本的类型,只有一个条件):

for i <= 3 {...}

Type2(经典 for 循环)

for j := 7; j <= 9; j++ {...}

Type3(死循环靠break)

for {...break}

然后我遇到了这个对数组中的值求和的for循环

nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
fmt.Println("sum:", sum)//"sum: 9"

就是上面的for-loop在自动应用的地方被视为 Type1 <=和 nums 的范围作为最大值?我可以以任何方式改变值(value)吗?也许我需要两个额外的循环?我们可以应用类似 range + 2 的东西吗? ?

最佳答案

来自 Effective Go :

The Go for loop is similar to—but not the same as—C's. It unifies for and while and there is no do-while. There are three forms, only one of which has semicolons.

// Like a C for
for init; condition; post { }

// Like a C while
for condition { }

// Like a C for(;;)
for { }

它继续:

If you're looping over an array, slice, string, or map, or reading from a channel, a range clause can manage the loop.

for key, value := range oldMap {
newMap[key] = value
}

据此,我将 range 循环视为 for condition { } 循环,其中 condition(例如它是)是被指定为数组/slice/字符串/映射/chan 值的变量不是 nil,尽管在实践中甚至显式 nil 值也有效

for _, v := range []interface{}{nil, nil, nil, nil} {
// will still iterate four times
}

实际上,将 Go 的 for 循环视为 C 风格 for init 的上下文组合可能更有用;健康)状况; post 循环、经典的 while 循环和更现代的 foreach循环。

关于loops - 在 Go 中使用范围循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51202522/

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