多次元配列のソートは、ソートの実行方法を手動で定義することで Go で実現できます。次の 2 つのアプローチが可能です。
1. sort.Sort インターフェイスの実装:
sort.Sort で使用する Len、Less、および Swap のカスタム メソッドを作成し、並べ替え中に配列値を変更できるようにします。例:
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] } func main() { m := Matrix(matrix) sort.Sort(&m) }
2. sort.Slice 関数の使用:
配列をスライスに変換し、並べ替えを処理するための同等の関数を 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)
どちらのアプローチでも、Go での 2 次元配列のソート動作をカスタマイズできます。
以上がGo で 2D 配列をソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。