¿Cuál es el valor cero (zero value) de time.Time en Go y cómo verificar si una variable de tiempo está vacía?
¡Hola a todos! Acabo de empezar a aprender Go y me encontré con una situación confusa al trabajar con el tipo time.Time.
Tengo una estructura para almacenar datos de usuario:
type User struct {
ID int
Name string
CreatedAt time.Time
UpdatedAt time.Time
}
Cuando creo un nuevo usuario sin especificar explícitamente la hora, espero que los campos CreatedAt y UpdatedAt sean null o nil, como en otros lenguajes (Java, C#). Pero en Go no puedo asignarles nil — el compilador se queja.
Intenté esto:
var u User
fmt.Println(u.CreatedAt) // Muestra: 0001-01-01 00:00:00 +0000 UTC
fmt.Println(u.CreatedAt == nil) // Error de compilación: cannot convert nil to type time.Time
Preguntas:
- ¿Cuál es el valor por defecto (zero value) de
time.Time? - ¿Por qué no es
nil? - ¿Cómo