Я работаю с базами данных Go и MySQL. Предположим, у меня есть фрагмент строки, подобный этому: []string{"b", "c", "a"}
, и я хочу получить окончательные данные, подобные этому:
[]Student{
Student{ID: "b", Name: "Ben"},
Student{ID: "c", Name: "Carl"},
Student{ID: "a", Name: "Alexander"},
}
Когда я хочу построить запрос MySQL, используется ORDER BY FIELD(id,'b','c','a')
эффективный способ ? Или, если я не буду его использовать, у меня будет такой код:
keys := []string{"b", "c", "a"}
...
students := make([]Student, 0)
for rows.Next() {
s := Student{}
err := rows.Scan(&s.ID, &s.Name)
if err != nil {
log.Fatal(err)
}
students = append(students, s)
}
mStudents := make(map[string]Student, 0)
for _, v := range students {
mStudents[v.ID] = v
}
finalData := make([]Student, 0)
for _, v := range keys {
if _, ok := mStudents[v]; ok {
finalData = append(finalData, mStudents[v])
}
}
Но я думаю, что это очень неэффективный способ. Итак, есть ли другой способ?
Спасибо.