Avatar ·

¿Cuál es el valor cero para 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 paquete time.

Tengo una estructura en la que uno de los campos es una fecha y hora. A veces este campo puede no estar definido (null de otros lenguajes). En PHP o JavaScript simplemente verificaría con null, pero en Go no existe ese lujo. Intenté usar nil, pero el compilador dio un error.

Aquí hay un ejemplo de mi código:

package main

import (
    "fmt"
    "time"
)

type Event struct {
    Name      string
    CreatedAt time.Time
    UpdatedAt time.Time // puede no estar definido
}

func main() {
    e := Event{
        Name: "Evento de prueba",
        // UpdatedAt no lo defino
    }
    
    // Intento verificar si UpdatedAt está definido
    if e.UpdatedAt == nil {  // Error de compilación
        fmt.Println("UpdatedAt no está definido")
    }
    
    fmt.Println(e.UpdatedAt) // Muestra: 0001-01-01 00:00:00 +0000 UTC
}