Ответ 1
Переменная интерфейса может использоваться для хранения любого значения, соответствующего интерфейсу, и методов вызова, которые являются частью этого интерфейса. Обратите внимание, что вы не сможете получить доступ к полям базового значения через переменную интерфейса.
В этом случае ваш метод SearchItemsByUser
возвращает значение interface{}
(т.е. пустой интерфейс), который может содержать любое значение, но не обеспечивает прямого доступа к этому значению. Вы можете извлечь динамическое значение, удерживаемое переменной интерфейса, через утверждение типа, например:
dynamic_value := interface_variable.(typename)
За исключением того, что в этом случае тип динамического значения является приватным для вашего метода SearchItemsByUser. Я бы предложил внести два изменения в ваш код:
-
Определите тип
results
на верхнем уровне, а не внутри тела метода. -
Сделайте
SearchItemsByUser
прямое возвращение значения типаresults
вместоinterface{}
.