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]
在回路不工作,我该怎么办“流行”在一个循环一行程序?