-2
内的工作,我有这个功能,这需要从结构输入的未知量:如何使围棋追加一系列循环
func GetAllXXXByQueryFilters(ctx context.Context, filters ...XXXFilters) ([]XXX, error) {
var allKeys []*datastore.Key
var xxx []XXX
for _, filter := range filters {
query := datastore.NewQuery("XXX")
if filter.Foo != "" {
query = query.Filter("foo =", filter.Foo)
}
if filter.Bar != "" {
query = query.Filter("bar =", filter.Bar)
}
keys, err := models.DSClient().GetAll(ctx, query, &xxx)
if err != nil {
return nil, err
}
allKeys = append(keys) // PROBLEM HERE
}
for i, key := range allKeys {
xxx[i].ID = key.ID
}
return xxx, nil
}
的问题是,allKeys将覆盖以前的查询结果。我以前做克服的问题:
keys1, err := models.DSClient().GetAll(ctx, query1, &xxx)
keys2, err := models.DSClient().GetAll(ctx, query2, &xxx)
keys = append(keys1, keys2...)
但我希望我的GetAllXXXByQueryFilters更加复杂和避免重复代码,现在我似乎无法弄清楚如何我可以从for _, filter := range filters
循环键存储然后把它们全部追加。所以我希望可能有一个更明智的方法去取代allKeys = append(keys)
这条线,以便它不覆盖以前的键?
太好了,非常感谢:) – fisker