Sobes.tech
Junior — Middle

Чӣ тавр метавон массиви сохторҳоро дар забони Go сорт кард?

sobes.tech AI

Ҷавоб аз AI

Дар забони Go, барои сорт кардани массиви сохторҳо метавонед аз бастаи sort истифода баред. Барои ин, бояд интерфейси sort.Interface-ро иҷро кунед, ки се методро талаб мекунад: Len(), Less(i, j int) bool ва Swap(i, j int).

Масалан, сорт кардани слайси сохторҳо бо як аз майдонҳои онҳо:

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)
}

Натиҷа он аст, ки слайси people ба рӯйхати синну соли онҳо сорт мешавад.