发布时间:2024-12-23 02:56:19
示例:
```go type Person struct { Name string Age int } ``` 上面的代码定义了一个名为 "Person" 的结构体,它有两个字段:Name 和 Age。Name字段类型为字符串,Age字段类型为整数。示例:
```go 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{ {"Alice", 25}, {"Bob", 30}, {"Charlie", 20}, } sort.Sort(ByName(people)) fmt.Println(people) } ``` 上述代码定义了一个结构体切片 ByName,它实现了 sort.Interface 接口的三个方法:Len、Swap 和 Less。其中 Len 方法返回切片长度,Swap 方法用于交换两个元素的位置,Less 方法比较两个元素的 Name 字段大小。 在主函数中,我们创建了一个包含三个 Person 结构体的切片,并使用 sort.Sort 函数对其进行排序。最后,我们打印排序后的结果。示例:
```go 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", 25}, {"Bob", 30}, {"Charlie", 20}, } sort.Sort(ByAge(people)) fmt.Println(people) } ``` 上述代码定义了一个结构体切片 ByAge,它根据 Age 字段进行排序。其他部分与前面的示例相似。以上就是关于 Golang 结构体排序的介绍,希望对您有所帮助。