Go에서 2차원 배열을 정렬하려면 사용자 정의 정렬 기준을 정의해야 합니다. 한 가지 접근 방식은 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()는 행렬의 두 행을 요소별로 비교하고, Swap()은 두 행을 교환합니다.
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)
여기서는 행렬[ :]는 행렬을 슬라이스로 변환하고 제공된 익명 함수는 정렬 기준을 정의합니다. 슬라이스와 함수를 sort.Slice()에 전달하면 행렬이 제자리에서 정렬됩니다.
위 내용은 Go에서 2D 배열을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!