Этот пример из json.Unmarshal docs (слегка модифицированный для простоты использования Animal
вместо []Animal
) работает без ошибок:
Ссылка на рабочий стол на рабочем месте
// ...
var animals Animal
err := json.Unmarshal(jsonBlob, &animals)
// ...
Но этот слегка измененный пример не делает:
ссылка на игровое поле нерабочего примера
// ...
var animals *Animal
err := json.Unmarshal(jsonBlob, animals)
// ...
Он отображает эту неясную ошибку, которая действительно не помогает (выглядит больше как вызов функции, чем ошибка IMO):
json: Unmarshal (nil * main.Animal)
Это похоже на то, что animals
- неинициализированный указатель. Но документы говорят (акцент мой):
Unmarshal unmarshals JSON в значение, на которое указывает указатель. Если указатель равен нулю, Unmarshal выделяет новое значение для его указания.
Итак, почему во всплывающем примере неудачное отключение маршала и показывает ту непонятную ошибку?
(Кроме того, это "unmarshalling" или "unmarshaling" (один L)? Документы используют оба.)