Goで2次元配列の部分配列を得たい


Go言語で2次元配列を作成し、そこから部分的に取り出した配列を作りたい時にスライスを用いて下記のように記述しましたが、行は切り出せましたが列は切り出せませんでした。

<https://play.golang.org/p/QSzCo8ffBw>

つまり上の例では[5,5]を[3,3]になってほしいところが[3,5]になってしまっています。  
列も含めスライスするにはどのようにすれば良いのでしょうか。




残念ながらこのプログラムですと

[code]

    m := [][]float64{
        {1, 1, 1, 0, 0},
        {0, 1, 1, 1, 0},
        {0, 0, 1, 1, 1},
        {0, 0, 1, 1, 0},
        {0, 1, 1, 0, 0},
    }
    
[/code]

に対して、 `m[0:3][0:3]` は

[code]

    n := m[0:3]
    n[0:3]
    
[/code]

の処理をしたことと同じになってしまいます。行と列が同じ数だとわかりにくいので `n[0:2]` としたものが次のコードです。

<https://play.golang.org/p/wUylO3DLyR>

期待通りの動作をさせるには行ごとに必要な列を抜き出す処理を書いてあげないといけません。（次のコード参照）

<https://play.golang.org/p/0YaZMQiA6o>




残念ながらこのプログラムですと

[code]

    m := [][]float64{
        {1, 1, 1, 0, 0},
        {0, 1, 1, 1, 0},
        {0, 0, 1, 1, 1},
        {0, 0, 1, 1, 0},
        {0, 1, 1, 0, 0},
    }
    
[/code]

に対して、 `m[0:3][0:3]` は

[code]

    n := m[0:3]
    n[0:3]
    
[/code]

の処理をしたことと同じになってしまいます。行と列が同じ数だとわかりにくいので `n[0:2]` としたものが次のコードです。

<https://play.golang.org/p/wUylO3DLyR>

期待通りの動作をさせるには行ごとに必要な列を抜き出す処理を書いてあげないといけません。（次のコード参照）

<https://play.golang.org/p/0YaZMQiA6o>

