Go
  • Введение
  • Основы
  • Массивы
  • Считывание данных
  • Словари
  • Функции
  • Структуры и методы
  • Ошибки
  • JSON
  • Динамические массивы
  • Сортировка записей
Powered by GitBook
On this page

Was this helpful?

Сортировка записей

Импорт библиотек.

import (
    "fmt"
    "sort"
)

Описание структуры.

type pointXY struct {
    x int
    y int
}

Описание типа для хранения массива структур.

type pointsArrayXY [] pointXY

Функция для вывода содержимого массива структур.

func printPoints(mass [] pointXY) {
    fmt.Println("   ")
    for i := 0; i < len(mass); i++ {
        p := mass[i]
        fmt.Println(p.x, p.y)
    }
    fmt.Println("   ")
}

Функция для добавления новой структуры в массив.

func addElement(mass [] pointXY, x int, y int) [] pointXY {
    var p pointXY
    p.x = x
    p.y = y
    return append(mass, p)
}

Описание вспомогательных функций для сортировки.

func (mass pointsArrayXY) Len() int {
    return len(mass)
}

func (mass pointsArrayXY) Swap(i, j int) {
    mass[i], mass[j] = mass[j], mass[i]
}

func (mass pointsArrayXY) Less(i, j int) bool {
    if mass[i].x < mass[j].x {
        return true
    }
    if mass[i].x > mass[j].x {
        return false
    }
    if mass[i].y < mass[j].y {
        return true
    }
    if mass[i].y > mass[j].y {
        return false
    }
    return false
}

Содержимое главной функции.

func main() {
    var arr [] pointXY

    arr = addElement(arr, 20, 28)
    arr = addElement(arr, 12, 30)
    arr = addElement(arr, 18, 35)
    arr = addElement(arr, 14, 25)
    arr = addElement(arr, 14, 23)
    arr = addElement(arr, 14, 24)

    printPoints(arr)

    sort.Sort(pointsArrayXY(arr))

    printPoints(arr)
}
PreviousДинамические массивы

Last updated 5 years ago

Was this helpful?