我使用切片作为堆栈。
当我这样做时
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]
在循环中不起作用,我如何在循环中将“pop”作为单行执行?
慕桂英3389331
相关分类