This is an explanation of the video content.
 用技术延续对ACG的热爱
24

 |   | 

Go实现命令行版的学生成绩管理程序

实现了一个完整的学生成绩管理程序。在程序中,定义了两个结构体类型: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

24 服务端 ↦ Go开发技巧 __ 152 字
 Go开发技巧 #2