gpt4 book ai didi

datetime - 为什么 Go 中的时间在结构中打印不同?

转载 作者:IT王子 更新时间:2023-10-29 01:21:06 24 4
gpt4 key购买 nike

我刚开始使用 Go,在我写的第一个程序中我打印了一个结构,它也显示了

{wall:0 ext:63533980800 loc:<nil>}

疑惑那是什么好像是一种类型time.Time() , 谷歌搜索把我带到了 this part of the Go source code其中在评论中解释了“挂钟”和“单调时钟”之间的区别。

所以为了单独测试它,我创建了一个新的简约程序:

package main

import (
"fmt"
"time"
)

type TheStruct struct {
the_time time.Time
}

func main() {
the_struct := TheStruct{time.Now()}
fmt.Println(the_struct)
fmt.Printf("%+v\n", the_struct)
fmt.Println(the_struct.the_time)
fmt.Println()
the_struct_2 := TheStruct{time.Unix(1505099248, 200)}
fmt.Println(the_struct_2)
fmt.Printf("%+v\n", the_struct_2)
fmt.Println(the_struct_2.the_time)
}

打印出以下内容:

{{13719544904843884912 534246 0x1140680}}
{the_time:{wall:13719544904843884912 ext:534246 loc:0x1140680}}
2017-09-11 05:08:11.35635032 +0200 CEST m=+0.000534246

{{200 63640696048 0x1140680}}
{the_time:{wall:200 ext:63640696048 loc:0x1140680}}
2017-09-11 05:07:28 +0200 CEST

所以我想知道两件事:

  1. 与单独打印(使用 the_struct.the_time )时更常见的日期时间符号相比,为什么结构的一部分打印为挂钟的时间?
  2. 我的其他程序中的代码打印出 <nil> 是否有问题?对于本地?我该如何解决?

最佳答案

它在您的结构中不打印格式化时间的原因是未在未导出的字段上调用 ​​String 方法(引用 https://golang.org/pkg/fmt/):

When printing a struct, fmt cannot and therefore does not invoke formatting methods such as Error or String on unexported fields.

将结构更改为导出字段(首字母大写)使其调用 String 方法:

   package main

import (
"fmt"
"time"
)

type TheStruct struct {
The_time time.Time
}

func main() {
the_struct := TheStruct{time.Now()}
fmt.Println(the_struct)
fmt.Printf("%+v\n", the_struct)
fmt.Println(the_struct.The_time)
fmt.Println()
the_struct_2 := TheStruct{time.Unix(1505099248, 200)}
fmt.Println(the_struct_2)
fmt.Printf("%+v\n", the_struct_2)
fmt.Println(the_struct_2.The_time)
}

输出:

{2009-11-10 23:00:00 +0000 UTC m=+0.000000000}
{The_time:2009-11-10 23:00:00 +0000 UTC m=+0.000000000}
2009-11-10 23:00:00 +0000 UTC m=+0.000000000

{2017-09-11 03:07:28.0000002 +0000 UTC}
{The_time:2017-09-11 03:07:28.0000002 +0000 UTC}
2017-09-11 03:07:28.0000002 +0000 UTC

Playground 上:https://play.golang.org/p/r0rQKBlpWc

关于datetime - 为什么 Go 中的时间在结构中打印不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46147641/

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