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 ба рӯйхати синну соли онҳо сорт мешавад.