Time 时间的“零值”是多少?时间在走?

Time 时间的“零值”是多少?时间在走?,time,go,null,Time,Go,Null,在错误条件下,我尝试返回nil,这会引发错误: cannot use nil as type time.Time in return argument time.time的zero值是多少?调用空的time.timestruct literal将返回Go的零日期。因此,对于以下打印语句: fmt.Println(time.Time{}) 输出为: 0001-01-01 00:00:00 +0000 UTC 为完整起见,合同明确规定: 时间类型的零值为1年1月1日00:00:00.00000

在错误条件下,我尝试返回
nil
,这会引发错误:

cannot use nil as type time.Time in return argument

time.time
zero
值是多少?

调用空的
time.time
struct literal将返回Go的零日期。因此,对于以下打印语句:

fmt.Println(time.Time{})
输出为:

0001-01-01 00:00:00 +0000 UTC
为完整起见,合同明确规定:

时间类型的零值为1年1月1日00:00:00.000000000 UTC


time.time的零值是
0001-01-01 00:00:00+0000 UTC
请参见您应该改用time.IsZero()函数:

func (Time) IsZero

func (t Time) IsZero() bool
IsZero reports whether t represents the zero time instant, January 1, year 1, 00:00:00 UTC.

您可以使用
IsZero()
来检测零时间。通常,当我想返回
nil
以证明没有设置值时,我使用指针作为函数签名中的返回值。“不传递参数”听起来像是函数调用。它是一个没有指定字段的结构文本。X{}是任何X的结构X的零值。@RussCox我不认为这是真的。在我的例子中,我的结构中有一个time.time字段,它具有'ompitempty'属性。如果我没有设置该值,它将自动设置为0001-01-01 00:00:00+0000 UTC,而不是被忽略。@GauravOjha,请参阅。实际上,如果比较给定的时间值是否为零,则实际应使用该值。虽然这是比较的正确答案,但OP没有询问比较问题,而是如何初始化零值。公认的答案是正确的。