Прежде всего, чтобы прояснить понятия - на Голанге нет наследства.Голанг предпочитает композицию наследству.То, что вы делаете с Animal
и Dog
, там называется встраивание в Go.
Во-вторых, правильный способ использования json.Unmarshal
- передать указатель в качестве второгоаргумент.Итак, чтобы исправить ваш код:
func main() {
var dog Dog
err := json.Unmarshal([]byte(`{
"name": "Loki",
"color": "Brown"
}`), &dog)
if err != nil {
log.Fatal(err)
}
}
Если вы знакомы с C, подумайте о json.Unmarshal
как о чем-то похожем на scanf
.Вызывающая сторона передает адрес scanf
, чтобы scanf
мог "заполнить значение" в ячейке памяти, представленной указателем.