0 { fmt.Print-6ren">
gpt4 book ai didi

go - slice 不断重新填充循环中的旧条目

转载 作者:IT王子 更新时间:2023-10-29 02:35:04 26 4
gpt4 key购买 nike

我在遍历 slice 上实现的队列时看到一个奇怪的现象,我以前从未经历过:

fmt.Printf("BEFORE LOOP\n")

for len(queue) > 0 {
fmt.Printf("BEFORE-QUEUE=(%d) %v\n", len(queue), queue)
currentPath, queue := queue[0], queue[1:]
fmt.Printf("PATH=[%s] AFTER-QUEUE=(%d) %v\n", currentPath, len(queue), queue)
}

fmt.Printf("AFTER LOOP\n")

输出:

BEFORE LOOP
BEFORE-QUEUE=(1) [../../test/asset]
PATH=[../../test/asset] AFTER-QUEUE=(0) []
BEFORE-QUEUE=(1) [../../test/asset]
PATH=[../../test/asset] AFTER-QUEUE=(0) []
BEFORE-QUEUE=(1) [../../test/asset]
PATH=[../../test/asset] AFTER-QUEUE=(0) []
BEFORE-QUEUE=(1) [../../test/asset]
PATH=[../../test/asset] AFTER-QUEUE=(0) []
BEFORE-QUEUE=(1) [../../test/asset]
...

这是在 1.11.4 版本下通过“go run”运行的。我不确定在我的情况/设计中是什么触发了这种行为。

想法/分析?

最佳答案

您正在“跟踪”队列 - 即。创建一个新的队列变量(由于 :=)。尝试:

currentPath := queue[0]
queue = queue[1:]

关于go - slice 不断重新填充循环中的旧条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56894729/

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