gpt4 book ai didi

json - Go:分配给嵌套结构

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:30 25 4
gpt4 key购买 nike

下面是一个代码片段——我很困惑如何在我用于 JSON 解码的嵌套结构(“myTime”)中分配变量。 (我在 JSON 文件中有一些 Unix 时间戳,我希望学习如何解码它们。)

这会引发以下错误:

main.go:15: cannot use time.Unix(a, 0) (type time.Time) as type *myTime in assignment
main.go:25: t.String undefined (type myTime has no field or method String)

我不确定如何去理解这个问题,所以任何解释或指向特定文档的指针都会有很大帮助!

package main

import (
"encoding/binary"
"encoding/json"
"fmt"
"log"
"time"
)

type myTime time.Time

func (t *myTime) UnmarshalJSON(buf []byte) error {
a, _ := binary.Varint(buf)
t = time.Unix(a, 0)
return nil
}

func main() {
var t myTime

if err := json.Unmarshal([]byte("123123123.123123"), &t); err != nil {
log.Fatal(err)
}
fmt.Printf("result: %f\n", t.String())
}

最佳答案

time.Unix 返回一个 time.Time 值(不是指针)

所以就这样 *t = myTime(time.Unix(a,0))

这基本上将从 time.Unix(a,0) 返回的值分配给 t

指向的值

至于字符串,你必须自己制作:

func (m myTime) String() string { 返回时间.Time(m).String() }

这是因为当你为一个类型起别名时,你并没有继承它的方法集。所以你必须自己声明任何你想要的方法。

关于json - Go:分配给嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39442825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com