// CalculateScore 计算学生的总分数
// 输入为学生信息的切片,每个学生信息是一个map,包含"mathScore"和"englishScore"字段
// 返回每个学生总分数的切片,每个元素是一个map,包含"totalScore"字段
func CalculateScore(students []map[string]interface{}) []map[string]float64 {
var results []map[string]float64
for _, student := range students {
totalScore := calculateTotalScore(student)
result := map[string]float64{
"totalScore": totalScore,
}
results = append(results, result)
}
return results
}
// calculateTotalScore 计算单个学生的总分数
func calculateTotalScore(student map[string]interface{}) float64 {
var totalScore float64
addScore(&totalScore, student, "mathScore")
addScore(&totalScore, student, "englishScore")
return totalScore
}
// addScore 将指定科目分数加到总分数上
func addScore(totalScore *float64, student map[string]interface{}, subject string) {
if score, ok := student[subject].(float64); ok {
*totalScore += score
}
}