не может использовать data.GetProduct (id) (значение типа * data.Product) как * Значение продукта в присвоении
p.To JSON undefined (тип * У продукта нет поля или метода. To JSON)
Проблема здесь в том, что внутри обработчика GetProduct
переменная p
уже имеет тип (*handlers.Product
) отличается от того, который возвращается функцией data.GetProduct
(*data.Product
). Поэтому вы можете использовать другое имя для переменной, в которой будет храниться результат data.GetProduct
.
Почему, например, учитель делает это так. [] * Product {& Product {}, & Product {}} в чем причина? Пожалуйста, объясните.
В общем, потому что это один из доступных способов инициализации фрагмента структур, согласно языку spe c. Почему учитель использовал этот метод специально? Если бы учитель не доверил кому-то причину, то никто бы не узнал, я, конечно, не знаю.
это выдает предупреждение: избыточный тип из массива, фрагмента или составного литерала карты. необходимо понять, почему
Поскольку это правда, он является избыточным, согласно языку spe c, в составном литеральном выражении вы можете elide типы элементов и ключей.
Например, не избыточная версия следующего составного литерала:
[]*Product{&Product{}, &Product{}}
будет выглядеть следующим образом:
[]*Product{{}, {}}
и результат этих двух выражений будет одинаковым.