2015-08-20 4 views
1

У меня есть эта функция:GO Generic типа массива в параметре функции

func functionX(collection []*interface{}) { 
    ... 
    response, err := json.MarshalIndent(collection, "", " ") 
    ... 
} 

Я хочу коллекция параметра, чтобы массивы любого рода, поэтому я попытался с интерфейсом * {}, но я «м, получающие ошибки, как это:

cannot use MyDataType (type []*model.MyDataType) as type []*interface {} in argument to middleware.functionX 
+1

возможно дубликат [Невозможно преобразовать \ [\] строка \ [\] интерфейс {}] (http://stackoverflow.com/questions/12990338/cannot-convert-string-to-interface) –

ответ

5

вы не можете сделать это таким образом, но вы можете легко сделать это:

func functionX(collection interface{}) error { 
    ... 
    response, err := json.MarshalIndent(collection, "", " ") 
    ... 
} 

playground

+0

Спасибо, я уже понял это, но точно так же, как вы говорите :) Это работает как шарм – Oriam

Смежные вопросы