Github golang中非原子类型的类型包装

Github golang中非原子类型的类型包装,github,go,time,Github,Go,Time,我是golang的新手,正在尝试理解非原子类型time.time的类型包装代码示例 所讨论的类型扩展来自github上GDAX的Go客户端 预期的行为是来自项目coinbase.Time的时间变量,其类型为项目文件中定义的Time.Time.Time,其行为类似于以下扩展原子类型int的示例,因为对于类似Time.format from的函数,它们可能遵循一种从基类型继承的方式: 但是,如果我修改中的项目列表帐户分类账示例中的代码示例,以包含一个打印函数,该函数可能会为我提供CreatedAt结

我是golang的新手,正在尝试理解非原子类型time.time的类型包装代码示例

所讨论的类型扩展来自github上GDAX的Go客户端

预期的行为是来自项目coinbase.Time的时间变量,其类型为项目文件中定义的Time.Time.Time,其行为类似于以下扩展原子类型int的示例,因为对于类似Time.format from的函数,它们可能遵循一种从基类型继承的方式:

但是,如果我修改中的项目列表帐户分类账示例中的代码示例,以包含一个打印函数,该函数可能会为我提供CreatedAt结构变量的可读视图,如下所示,我会收到一个编译器错误,即类型coinbase.Time没有字段或方法格式:

for循环中的预期行为是以人类可读的格式打印分类账条目。我可以获得结构的内容,但我不确定如何使用生成的墙、ext和loc成员

例如,在For循环中插入fmt.Printf%v,e.CreatedAt可以表示如下所示的时间:

coinbase.Time{wall:0x3015a123,ext:63612345678,loc:*Time.Locationnil} {806986000 63638738354}

通过将变量格式化为字符串,我还可以看到wall的类型为uint64,ext的类型为int64,loc的格式为GMT/UTC=0,因为fmt.Printf%s,e.CreatedAt给我的输出类似于以下内容:

{%!suint64=712345678%!sint64=63612345678%!s*time.Location=}

我好像错过了什么。我已经通过请求进一步的信息,但这可能是一个nube问题。因此,我不确定响应时间会有多快,我感兴趣的是在go中扩展非原子类型的更一般情况。

不要从底层类型继承任何方法实际上go中根本没有继承;必须强制转换到基础类型才能从该类型调用任何方法:

(time.Time(e.CreatedAt)).Format("2006-01-02 15:04:05.999999+00")

这个问题有点让人困惑-int不是原子的,因此需要。不仅int不是原子的,Go中也没有原子类型。唯一的原子运算符处于同步/原子状态。通道是Go中唯一的原子基类型。@Adrian:发送和接收是原子操作,但读取和写入通道值不是。当用户试图同时替换通道值以改变选定块中的大小写时,这通常会触发竞争条件。公平地说,只有通道操作是原子的,而不是值本身。这称为类型转换。Go中没有类型转换。是的,规范中称之为类型转换,但到基础类型的类型转换与地球上其他语言中称之为类型转换没有实际区别。@Adrian这就是问题所在。谢谢
for _, e := range ledger {
    print("Entry Creation: ")
    fmt.Printf(e.CreatedAt.Format("2006-01-02 15:04:05.999999+00"))
}
(time.Time(e.CreatedAt)).Format("2006-01-02 15:04:05.999999+00")