Go ветеринар точно скажет вам, в чем проблема:
. / Prog.go: 18: 16: вызов Unmarshal передает не указатель в качестве второго аргумента
Также никогда игнорировать ошибки!Минимум, что вы можете сделать, это напечатать его:
ds := check{A: time.Now().Truncate(0)}
fmt.Println(ds)
dd, err := json.Marshal(ds)
fmt.Println(err)
d2 := check{}
err = json.Unmarshal(dd, d2)
fmt.Println(err)
fmt.Println(d2)
Это выдаст (попробуйте на Go Playground ):
{2009-11-10 23:00:00 +0000 UTC}
<nil>
json: Unmarshal(non-pointer main.check)
{0001-01-01 00:00:00 +0000 UTC}
Вы должны пройти указатель на json.Unmarshal()
для того, чтобы он мог разобрать (изменить) ваше значение:
err = json.Unmarshal(dd, &d2)
С этим изменением будет вывод (попробуйте Go Playground ):
{2009-11-10 23:00:00 +0000 UTC}
<nil>
<nil>
{2009-11-10 23:00:00 +0000 UTC}