1 回答
TA贡献1806条经验 获得超8个赞
您的存储方法返回一个,它是指向值切片的指针。*[]versioner.ProviderResponseversioner.ProviderResponse
您正在尝试将 具有上述类型的 分配给声明为 的结构字段,该字段是指向 的指针切片。providers[]*ProviderResponseversioner.ProviderResponse
类型不匹配,编译器会告诉您这一点。
如果这只是一个拼写错误,那么这是一个简单的修复。如果您无法完全控制其中一些源代码(或者如果类型完全按照它们必须的方式声明),则只需将存储结果重新映射到结构字段:
providers, err := r.store.FindAll()
if err != nil {
//
}
if providers == nil {
// must check this, since you want to dereference
}
res := make([]*versioner.ProviderResponse, len(*providers))
for i, v := range *providers {
v2 := v
res[i] = &v2 // don't address the loop variable
}
return &versioner.ListProvidersResponse{
Providers: res, // now assigning the correct type
}, err
为什么你不想解决循环变量(tl;dr,因为它被重用了)
- 1 回答
- 0 关注
- 59 浏览
添加回答
举报