For loop for range构造与Go中的闭包有什么关系?
Go中的for范围和闭包之间有关系吗?For loop for range构造与Go中的闭包有什么关系?,for-loop,go,range,closures,For Loop,Go,Range,Closures,Go中的for范围和闭包之间有关系吗? 我认为for range可以被视为使用闭包。一个可能的答案可能是这段代码具有相同的行为。首先,我使用闭包,其次,我使用范围循环 package main import "fmt" func main() { names := [4]string{"John", "Marie", "David", "Alex"} iter := generator(names) for true { i, v := iter(
我认为for range可以被视为使用闭包。一个可能的答案可能是这段代码具有相同的行为。首先,我使用闭包,其次,我使用范围循环
package main
import "fmt"
func main() {
names := [4]string{"John", "Marie", "David", "Alex"}
iter := generator(names)
for true {
i, v := iter()
fmt.Printf("%v %s\n", i, v)
if i == 3 {
break
}
}
fmt.Println("---------------------------------")
for i, v := range names {
fmt.Printf("%v %s\n", i, v)
}
}
func generator(arr [4]string) func() (int, string) {
index := 0
return func() (int, string) {
nextName := arr[index]
index++
return index - 1, nextName
}
}
Go中的for范围和闭包之间有关系吗
没有
唯一需要记住的是循环变量在每次迭代中都会被重用,for循环中的闭包都会在同一个变量上关闭。看