面试题答案
一键面试package main
import (
"fmt"
"sort"
)
type Task struct {
ID int
Priority int
}
func main() {
tasks := []Task{
{ID: 3, Priority: 2},
{ID: 1, Priority: 3},
{ID: 4, Priority: 2},
{ID: 2, Priority: 4},
}
sort.Slice(tasks, func(i, j int) bool {
if tasks[i].Priority != tasks[j].Priority {
return tasks[i].Priority > tasks[j].Priority
}
return tasks[i].ID < tasks[j].ID
})
for _, task := range tasks {
fmt.Printf("Executing Task ID: %d, Priority: %d\n", task.ID, task.Priority)
}
}
解释:
- 首先定义了一个
Task
结构体,用于存储任务的编号和优先级。 - 然后创建了一个包含多个任务的切片。
- 使用
sort.Slice
对任务切片进行排序,先按优先级从高到低排序,优先级相同则按任务编号从小到大排序。 - 最后遍历排序后的任务切片,模拟任务的执行并打印任务的编号和优先级。