Прэвэд))
Зачем используешь отображение там, где хочешь использовать слайс?))
StudentsExamList - тут ты врешь в названии, причем нагло, это отображение с ключами
строками (id) не ясно, зачем так, это просто хранение данных, которые тебе нужны в другом виде.
type StudentExam struct{
ID int
ExamID int
StudentID int
StudentFIO string
}
func findStudentsByExamID(id uint) []*StudentExam {
result := make([]*StudentsExam, len(StudentsExamList))
var i uint
for _, studentExam := range StudentsExamList {
if studentExam.ID == id {
result[i] = studentExam
}
i++
}
return result
}
func DataToJSON(data interface{}) []byte {
result, err := json.Marshal(data)
if err == nil {
return result
}
log.Printf("error: %v\n", err)
return []byte{}
}
Some comments:
Разделяй логику. Вывод - это одно, а поиск данных - это совсем другое, метод делающий обе эти вещи - не самая хорошая мысль.
StudentsExamList на сколько я понял глобальная переменая, их можно использовать только в исключительных ситуациях. Глобальная публичная переменная - вот это вообще зло.
Не создавай методов "getData" конкретизируй например: getStudentsByExamID(id uint) []*Student
"get**" методы предполагают, что данные гарантировано есть, в противном случае стоит использовать префикс "find". В твоем случае, что будет, если examID = -157
Exam_Id, stud_exam переходи на светлую сторону, не нарушай кодстайл.