MST

星途 面试题库

面试题:Go中复杂控制结构嵌套实现任务调度模拟

假设你要模拟一个简单的任务调度系统,有多个任务(用数字编号表示),每个任务有不同的优先级(1 - 5级,数字越大优先级越高)。使用Go的控制结构嵌套,实现一个程序,按优先级从高到低顺序执行任务,同一优先级的任务按编号从小到大执行。
25.8万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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)
    }
}

解释:

  1. 首先定义了一个Task结构体,用于存储任务的编号和优先级。
  2. 然后创建了一个包含多个任务的切片。
  3. 使用sort.Slice对任务切片进行排序,先按优先级从高到低排序,优先级相同则按任务编号从小到大排序。
  4. 最后遍历排序后的任务切片,模拟任务的执行并打印任务的编号和优先级。