Go で 2 次元配列を並べ替えるには、カスタムの並べ替え基準を定義する必要があります。 1 つのアプローチは、sort.Interface を実装して並べ替えに必要なメソッドを提供することです。
type Matrix [3][3]int func (m Matrix) Len() int { return len(m) } func (m Matrix) Less(i, j int) bool { for x := range m[i] { if m[i][x] == m[j][x] { continue } return m[i][x] < m[j][x] } return false } func (m *Matrix) Swap(i, j int) { m[i], m[j] = m[j], m[i] }
ここで、Matrix は Len()、Less()、および Swap() メソッドを定義することによって sort.Interface を実装します。 Len() は行列の長さを返し、Less() は行列の 2 つの行を要素ごとに比較し、Swap() は 2 つの行を交換します。
func main() { m := Matrix(matrix) sort.Sort(&m) }
この例では、行列は事前定義された 2 つの行列です。次元配列、m は sort.Interface を実装する行列のコピーです。 &m を sort.Sort() に渡すことで、行列はその場でソートされます。
別の方法は、sort.Slice() 関数を使用することです。
sort.Slice(matrix[:], func(i, j int) bool { for x := range matrix[i] { if matrix[i][x] == matrix[j][x] { continue } return matrix[i][x] < matrix[j][x] } return false }) fmt.Println(matrix)
ここでは、matrix[ :] は行列をスライスに変換し、提供された無名関数が並べ替え基準を定義します。スライスと関数を sort.Slice() に渡すと、行列がその場でソートされます。
以上がGo で 2D 配列をソートするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。