Qual é o valor zero de time.Time em Go e como verificar se uma variável de tempo está vazia?
Olá a todos! Acabei de começar a estudar Go e me deparei com uma situação confusa ao trabalhar com o tipo time.Time.
Tenho uma struct para armazenar dados do usuário:
type User struct {
ID int
Name string
CreatedAt time.Time
UpdatedAt time.Time
}
Quando crio um novo usuário sem especificar explicitamente o tempo, espero que os campos CreatedAt e UpdatedAt sejam null ou nil, como em outras linguagens (Java, C#). Mas em Go não posso atribuir nil a eles — o compilador reclama.
Tentei assim:
var u User
fmt.Println(u.CreatedAt) // Exibe: 0001-01-01 00:00:00 +0000 UTC
fmt.Println(u.CreatedAt == nil) // Erro de compilação: cannot convert nil to type time.Time
Perguntas:
- Qual é o valor padrão (zero value) de
time.Time? - Por que não é
nil? - Como