Go中time.Time的零值是什么,以及如何检查时间变量是否为空?
大家好!我刚开始学习Go,在处理time.Time类型时遇到了一个令人困惑的情况。
我有一个用于存储用户数据的结构体:
type User struct {
ID int
Name string
CreatedAt time.Time
UpdatedAt time.Time
}
当我创建一个没有显式指定时间的新用户时,我期望CreatedAt和UpdatedAt字段像其他语言(Java、C#)中那样是null或nil。但在Go中,我无法为它们赋值nil——编译器会报错。
我尝试了这样:
var u User
fmt.Println(u.CreatedAt) // 输出:0001-01-01 00:00:00 +0000 UTC
fmt.Println(u.CreatedAt == nil) // 编译错误:cannot convert nil to type time.Time
问题:
time.Time的默认值(zero value)是什么?- 为什么它不是
nil? - 如何