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 關注
- 76 瀏覽
添加回答
舉報