2016-04-10 2 views
4

Irgendwie, zur Laufzeit, bekomme ich die folgenden Panik Nachricht, auch wenn es mir scheint, ist die Methode für die Struktur definiert, die diese Schnittstelle implementiert.Schnittstelle Umwandlung Panik, wenn Methode nicht tatsächlich fehlt

panic: interface conversion: schema.MerchantResultset 
is not search.ResultsetInterface: missing method Add 

Dies ist die Schnittstelle Bauplan

type ResultsetInterface interface { 
    Init(string) 
    CacheSet(context.Context) error 
    CacheSetPart(context.Context, int) error 
    CacheGet(context.Context, string) error 
    Add(interface{}) 
    AddResultset(interface{}) 
} 

Das Folgende ist die Methode, die fehlt während der Laufzeit gemeldet wird, die zu meiner struct MerchantResultset zugeordnet ist.

func (mr *MerchantResultset) Add(item interface{}) { 
    mr.Data = append(mr.Data, item.(Merchant)) 
} 

ich irgendwie sehr verwirrt versucht, zu verstehen, was tatsächlich benötigt wird hier

+0

stimme mit Roland llligs Antwort überein. Ihre Panik meldet, dass 'schema.MerchantResultset' die Methode nicht implementiert. Dies ist der Fall, da die Add-Methode über den Zeigerempfänger verfügt. Sie müssen '& MerchantResultset {}' übergeben, nicht 'MerchantResultset {} '. – nevets

+0

Irgendwie gibt beide Optionen immer noch die gleiche Panik: 1) item: = schema.Merchant {}; resultSet.Add (Element) 2) Element: = schema.Merchant {}; resultSet.Add (& item) – gextra

+0

Also im Grunde bedeutet es, dass der einzige Implementierer wäre func (mr MerchantResultset) Add (Element-Schnittstelle {})? – gextra

Antwort

6

Wahrscheinlich ist es, weil Sie um eine MerchantResultset sind vorbei, aber die Add Methode wird nur für einen Zeiger auf dass Typ definiert .

Verwandte Themen