| |
实现了一个完整的学生成绩管理程序。在程序中,定义了两个结构体类型:Student 表示学生的姓名和成绩,GradeManager 管理学生成绩的集合。
GradeManager 结构体包含了 grades 字段,它是一个映射,用于保存学生姓名和对应的成绩。
在 GradeManager 结构体中,实现了 AddGrade 方法用于添加学生成绩,DeleteGrade 方法用于删除学生成绩,以及 GetPassingStudents 方法用于获取及格的学生姓名。
在 main 函数中,创建了一个 GradeManager 对象 gm,并通过调用相应的方法来添加、删除学生成绩,并输出及格的学生姓名。
package main
import (
"fmt"
"strings"
)
type Student struct {
Name string
Score int
}
type GradeManager struct {
grades map[string]Student
}
func NewGradeManager() *GradeManager {
return &GradeManager{
grades: make(map[string]Student),
}
}
func (gm *GradeManager) AddGrade(name string, score int) {
student := Student{
Name: name,
Score: score,
}
gm.grades[name] = student
}
func (gm *GradeManager) DeleteGrade(name string) {
delete(gm.grades, name)
}
func (gm *GradeManager) GetPassingStudents() []string {
passingStudents := []string{}
for _, student := range gm.grades {
if student.Score >= 60 {
passingStudents = append(passingStudents, student.Name)
}
}
return passingStudents
}
func main() {
// 创建学生成绩管理器
gm := NewGradeManager()
// 添加学生成绩
gm.AddGrade("Alice", 80)
gm.AddGrade("Bob", 70)
gm.AddGrade("Charlie", 55)
gm.AddGrade("Dave", 90)
// 删除一位学生的成绩
gm.DeleteGrade("Charlie")
// 输出及格的学生姓名
fmt.Println("及格的学生:")
passingStudents := gm.GetPassingStudents()
fmt.Println(strings.Join(passingStudents, "\n"))
}
最终的输出结果为:
及格的学生:
Alice
Bob
Dave