【发布时间】:2018-07-20 17:33:37
【问题描述】:
我正在尝试将一个数组附加到另一个数组(或切片到结构?) 一个查询(目标)的结果会被迭代并附加另一个查询的结果(每个检查点的目标),基于之前的查询结果。id
然后在模板中迭代结果。
型号
type Target struct {
ID uint32 `db:"id"`
CriteriaID string `db:"criteria_id"`
TargetCheck []*TargetCheck
}
type TargetCheck struct {
ID uint32 `db:"id"`
TargetID string `db:"target_id"`
CheckpointID template.HTML `db:"checkpoint_id"`
Name string `db:"name"`
}
func TargetByCriteriaID(criteriaID string) ([]Target, error) {
... <return rows>
}
func CheckpointByTargetID(targetID uint32) ([]TargetCheck, error) {
... <return rows>
}
func (target *Target) AddItem(TargetCheckItem *TargetCheck) []*TargetCheck {
target.TargetCheck = append(target.TargetCheck, TargetCheckItem)
return target.TargetCheck
}
控制器
func CriteriaBrowseGET(w http.ResponseWriter, r *http.Request) {
criteriaID := 5
target, err := model.TargetByCriteriaID(criteriaID)
for i := range target {
targetCheck, err := model.CheckpointByTargetID(target[i].ID)
target = model.Target.AddItem(targetCheck)
}
v := view.New(r)
v.Name = "criteria/browse"
v.Vars["target"] = target
v.Render(w)
}
查看
{{range $index, $content := .target}}
<p>Target: {{.ID}}</p>
{{if .}}
{{range .TargetCheck}}
<p>{{.CheckpointID}}</p>
<p>{{.Name}}</p>
{{end}}
{{end}}
{{end}}
在执行go build 时会说:
vendor\app\controller\criteria.go:74:24: 无效的方法表达式 model.Target.AddItem(需要指针接收器:(*model.Target).AddItem)
vendor\app\controller\criteria.go:74:24: model.Target.AddItem 未定义(model.Target 类型没有 AddItem 方法)
上面的代码有问题吗?
【问题讨论】:
标签: go