Sobes.tech
Junior — Middle

Kaip galima rūšiuoti struktūrų masyvą Go kalboje?

sobes.tech AI

Atsakymas iš AI

Go kalboje, struktūrų masyvą galima rūšiuoti naudojant paketą sort. Tam reikia įgyvendinti sort.Interface sąsają, kuri reikalauja trijų metodų: Len(), Less(i, j int) bool ir Swap(i, j int).

Pavyzdys, kaip rūšiuoti struktūrų slice pagal vieną iš jų laukų:

package main

import (
    "fmt"
    "sort"
)

type Person struct {
    Name string
    Age  int
}

type ByAge []Person

func (a ByAge) Len() int           { return len(a) }
func (a ByAge) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age }

func main() {
    people := []Person{
        {"Alice", 30},
        {"Bob", 25},
        {"Charlie", 35},
    }

    sort.Sort(ByAge(people))

    fmt.Println(people)
}

Rezultatas, kad people masyvas bus surūšiuotas pagal amžių.