tgoop.com/golang_interview/309
Last Update:
Для сортировки массива структур по алфавиту по полю Name в Go, вы можете использовать интерфейс sort.Interface и функцию sort.Sort()
из пакета sort.
Вот пример кода, который демонстрирует, как отсортировать массив структур по полю Name
:package main
В этом примере мы определяем тип Person для представления структуры человека с полями
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
type ByName []Person
func (a ByName) Len() int { return len(a) }
func (a ByName) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a ByName) Less(i, j int) bool { return a[i].Name < a[j].Name }
func main() {
people := []Person{
{Name: "Alice", Age: 25},
{Name: "Charlie", Age: 30},
{Name: "Bob", Age: 20},
}
sort.Sort(ByName(people))
for _, person := range people {
fmt.Println(person.Name, person.Age)
}
}Name
и Age
. Затем мы определяем тип ByName
, который является срезом структур Person
. Мы также реализуем методы Len(), Swap(),
и Less()
для типа ByName,
чтобы он соответствовал интерфейсу sort.Interface.
Затем мы создаем срез структур Person и заполняем его некоторыми значениями. Далее мы вызываем sort.Sort(ByName(people))
, чтобы отсортировать срез структур по полю Name
. Наконец, мы проходимся по отсортированному срезу и выводим отсортированные значения.
В результате выполнения этого кода вы увидите отсортированный по алфавиту список людей по полю Name
, сопровождающийся их возрастом.
@golang_interview