您的代码遇到变量覆盖问题,因为您通过将元素附加到同一后备数组来创建新切片(pathA 和 pathB)
Go 中切片的背景:
您的代码存在问题:
在您的代码中,您正在创建两个新切片, pathA 和 pathB,使用追加函数:
pathA := append(route, nextA) pathB := append(route, nextB)
发生的情况如下:
解决方案:
要避免这种覆盖,您需要确保 pathA 和 pathB 具有唯一的后备数组。您可以通过使用 make 和 copy 为其中一个手动创建一个新切片来实现此目的:
newRoute := make([]int, len(route), (cap(route)+1)*2) copy(newRoute, route) if i % 2 == 0 { pathA := append(newRoute, nextA) } else { pathB := append(newRoute, nextB) }
以上是为什么 Go 中向同一数组中的切片追加内容时会发生变量覆盖?的详细内容。更多信息请关注PHP中文网其他相关文章!