Импорт библиотек.
Описание структуры.
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)
}