【发布时间】:2020-06-08 22:32:55
【问题描述】:
我使用 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])
}
}
但我认为这是一种非常低效的方式。那么,还有其他方法吗?
谢谢。
【问题讨论】: