请用go写一段程序,这段程序需要定时遍历所有得学生信息,将学生成绩大于 60分 得学生信息放到一个新的单独集合,将小于60分得学生信息放到另一个单独集合,并分别打印出来,并且将所有得学生信息封装为map,key为学生姓名,value 为 分数,如何实现
时间: 2024-04-18 14:25:45 浏览: 5
以下是使用Go语言编写的程序示例,使用`time`和`map`来实现定时遍历学生信息并分类打印:
```go
package main
import (
"fmt"
"time"
)
type student struct {
name string
score int
}
func main() {
// 假设学生信息存储在一个学生切片中
studentInfo := []student{
{"Alice", 80},
{"Bob", 55},
{"Charlie", 70},
{"David", 65},
{"Eve", 45},
}
// 将学生信息封装为map
studentMap := make(map[string]int)
for _, s := range studentInfo {
studentMap[s.name] = s.score
}
// 创建定时器,每隔一段时间执行任务
ticker := time.NewTicker(10 * time.Second)
for range ticker.C {
// 存储大于60分和小于60分的学生信息的map
passingStudents := make(map[string]int)
failingStudents := make(map[string]int)
for name, score := range studentMap {
if score >= 60 {
passingStudents[name] = score
} else {
failingStudents[name] = score
}
}
// 打印学生成绩
fmt.Println("大于60分的学生信息:")
for name, score := range passingStudents {
fmt.Println(name, score)
}
fmt.Println("小于60分的学生信息:")
for name, score := range failingStudents {
fmt.Println(name, score)
}
}
}
```
在这个示例程序中,我们使用`time`包中的`Ticker`来定时执行任务。程序会每隔10秒执行一次任务。我们首先将学生信息封装为一个map,其中学生的姓名作为map的key,分数作为value。然后在任务中,我们遍历学生信息的map,并根据分数将学生信息放入`passingStudents`和`failingStudents`两个map中,然后分别打印出来。
请注意,这只是一个示例程序,您可能需要根据实际需求进行适当的修改。