在這種情況下,問題在於理解切片在 Go 中的功能。切片由指向數組的指標及其長度和容量組成。將元素附加到切片時,它首先檢查擴展切片是否會超出其底層數組的容量。如果是,則分配一個更大的數組,將現有元素複製到其中,並更新容量。然後,新元素被加入到陣列的末尾,並且長度被更新。
在您的程式碼中,您有以下幾行:
<code class="go">pathA := append(route, nextA) pathB := append(route, nextB)</code>
這裡有兩種可能性:
看起來第一種情況對於初始循環迭代來說是正確的,之後第二種情況發生。可以透過使用 copy() 和 make() 手動為這些路徑之一製作副本來解決此問題。
以上是Go 變數是否因切片誤解而被覆蓋?的詳細內容。更多資訊請關注PHP中文網其他相關文章!