Matrix transpose, A [i] [j] becomes A [j] [i] is relatively simple, the code directly.
func transpose(A [][]int) [][]int {
B := make([][]int, len(A[0]))
for i := 0; i < len(A[0]); i++ {
B[i] = make([]int, len(A))
for j := 0; j < len(A); j++ {
B[i][j] = A[j][i]
}
}
return B
}