スライスをスタックとして使用しています。スライスをループ内のスタックとして使用する方法
私はこの
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)
}
結果を実行して、これらを組み合わせることをしようとすると、しかし、これは私を混乱させるコンパイルエラー
未使用の変数「スタック」
です。私は:=
を、少なくとも1つの変数が宣言されている限り(この場合はa
)、stack
が再割り当てされる限り、使用できると考えました。しかし、私は明らかに間違っています。誰も説明できますなぜライン
a, stack := stack[len(stack) - 1], stack[:len(stack) - 1]
ループでは動作しません、と私は、ループ内のワンライナーとして「ポップ」を行うことができますどのように?変数は、以前同じブロックで宣言され、正しいタイプを有していた場合