Почему json.Unmarshal работает со ссылкой, а не с указателем?

Этот пример изjson.Unmarshal документы (слегка модифицированные для простоты использования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 отменяет маршализацию JSON в значение, на которое указывает указатель.Если указатель равен нулю, Unmarshal выделяет новое значение, на которое он указывает.

Так почему же демаршалинг не удался во втором примере и показывает эту неясную ошибку?

(Кроме того, это «unmarshalling» или «unmarshaling» (один L)? Документы используют оба.)