0
我正在使用切片作爲堆棧。如何在一個循環中將切片用作堆棧
當我這樣做
stack := make([]int, 0)
stack = append(stack, 1, 2, 3, 4, 5)
for len(stack) != 0 {
var a int
a, stack = stack[len(stack) - 1], stack[:len(stack) - 1]
fmt.Print(a)
}
我得到的輸出
54321
預期。
當我這樣做
stack := make([]int, 0)
stack = append(stack, 1, 2, 3, 4, 5)
a, stack := stack[len(stack) - 1], stack[:len(stack) - 1]
fmt.Println(a, len(stack))
我得到的輸出
5 4
預期。然而,當我嘗試將這些做這個
stack := make([]int, 0)
stack = append(stack, 1, 2, 3, 4, 5)
for len(stack) != 0 {
a, stack := stack[len(stack) - 1], stack[:len(stack) - 1]
fmt.Print(a)
}
的結果結合起來是一個編譯錯誤
未使用的變量「堆」
這混淆了我。只要至少有一個變量正在被聲明(在這種情況下爲a
),並且stack
將被重新分配,我想我可以使用:=
。不過,我顯然是錯的。任何人都可以解釋爲什麼線
a, stack := stack[len(stack) - 1], stack[:len(stack) - 1]
在迴路不工作,我該怎麼辦「流行」在一個循環一行程序?