登录
首页 >  Golang >  Go问答

父方法访问类型声明

来源:stackoverflow

时间:2024-02-29 22:30:31 196浏览 收藏

本篇文章向大家介绍《父方法访问类型声明》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我正在从 json api 解组 get 请求。部分字段是 unix 时间戳(以毫秒为单位)。对于这些字段,我编写了一个方法来处理解组。为此,我需要创建一个新的本地类型 datetime

type Datetime time.Time

type Response struct {
  Status    string   `json:"status"`
  CreatedAt Datetime `json:"created_at"`
}


// Handles unmarshalling of Time from the API
func (dt *Datetime) UnmarshalJSON(b []byte) error {
    var unixTimeMs int64
    if err := json.Unmarshal(b, &unixTimeMs); err != nil {
        return err
    }
    *dt = Datetime(time.Unix(0, unixTimeMs*1000000))
    return nil
}

现在我有了这个新的 response 对象,我想在 datetime 上调用 time.time 方法。我尝试过转换对象(即response.createdat.(time.time)),但这会导致恐慌。

如何在 datetime 上调用 time.time#string 等方法?


解决方案


Convert 将日期时间设置为 time.time 以调用 time 方法。示例:

fmt.println(time.time(dt).string())

另一种方法是使用带有嵌入时间字段的结构:

type Datetime struct {
     time.Time
}

所有 time.time 方法都提升为 datetime 类型。修改 unmarshaljson 方法以设置 dt.time 而不是 *dt

好了,本文到此结束,带大家了解了《父方法访问类型声明》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>