正方形の行列を転置する(つまり、列と行を入れ替える)簡単な関数を書こうとしています。問題の機能は次のとおりです。Golangを使用して2D配列スライスの要素を入れ替えることができません
func Transpose(a [][]bool) {
for i := 0; i < len(a); i++ {
for j := 0; j < len(a[i]); j++ {
a[i][j], a[j][i] = a[j][i], a[i][j]
}
}
}
動作していないようです。私はそれはとは何かを持っていると信じて
***
*
***
***
*
***
:私はこの機能それは次のような出力を提供します
func TestTranspose(t *testing.T) {
a := make([][]bool, 3)
a[0] = []bool{true, true, true}
a[1] = []bool{false, true, false}
a[2] = []bool{true, true, true}
fmt.Println(BoolArrayViz(a))
Transpose(a)
fmt.Println(BoolArrayViz(a))
}
を実行した場合(BoolArrayVizは、単純に「*」falseの場合「」本当かのようにブール値を出力します)私がスライスを回っているという事実。どんな助けもありがとう!
スライスには基本となる配列へのポインタが含まれているため、パラメータとして渡されたスライスを変更する関数は、その配列を変更します。詳細は、[スライス](https://blog.golang.org/go-slices-usage-and-internals)を参照してください。私は問題が転置論理があなたが期待していることをしていないと思う。ループの繰り返しごとにマトリックスを印刷すると役立ちます。 – Mark