在这种情况下,问题在于理解切片在 Go 中的功能。切片由指向数组的指针及其长度和容量组成。将元素附加到切片时,它首先检查扩展切片是否会超出其底层数组的容量。如果是,则分配一个更大的数组,将现有元素复制到其中,并更新容量。然后,新元素被添加到数组的末尾,并且长度被更新。
在您的代码中,您有以下几行:
<code class="go">pathA := append(route, nextA) pathB := append(route, nextB)</code>
这里有两种可能性:
看起来第一种情况对于初始循环迭代来说是正确的,之后第二种情况发生。可以通过使用 copy() 和 make() 手动为这些路径之一制作副本来解决此问题。
以上是Go 变量是否因切片误解而被覆盖?的详细内容。更多信息请关注PHP中文网其他相关文章!