所以我是新手,我来自javascript / node背景,为了练习,我一直在重写我的一些javascript代码。
我有一种情况,我有一个结构(在节点中它是我的对象),我需要迭代它并执行两个数据库查询。我有一些有效的东西,但似乎代价高昂且重复。
STRUCT:
type SiteUsers struct {
Active struct {
Moderators []string `json:"moderators"`
Admins []string `json:"admins"`
Regulars []string `json:"regulars"`
} `json:"active"`
}
然后在我处理api请求的函数中,该请求返回绑定到此结构的JSON,我为每个处于活动状态的角色使用for range循环。对于每一个,我执行相同的第一个查询,然后执行第二个查询,具体到每个查询。
v := getSiteUsers(&usrs, website)
for _, moderators := range v.Active.Moderators {
// Insert into user table
// Insert into user table with role of moderator
}
for _, admins := range v.Active.Admins {
// Insert into user table
// Insert into user table with role of admin
}
for _, regulars := range v.Active.Regulars {
// Insert into user table
// Insert into user table with role of regular
}
这种方法可行,但感觉并不完全正确,我很乐意从经验丰富的人那里得到一些意见。
答案 0 :(得分:1)
这样的事情会更好吗?
v := getSiteUsers(&usrs, website)
insertUsers := func(users []string, role roleType) {
for _, user := range users {
// Insert into user table
// Insert into user table with given role
}
}
insertUsers(v.Active.Moderators, moderatorRole)
insertUsers(v.Active.Admins, adminRole)
insertUsers(v.Active.Regulars, regularRole)