Avatar ·

Qual é o valor zero para 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 pacote time.

Tenho uma estrutura na qual um dos campos é uma data e hora. Às vezes, esse campo pode não ser definido (null de outras linguagens). Em PHP ou JavaScript, eu simplesmente verificaria se é null, mas em Go não existe esse luxo. Tentei usar nil, mas o compilador deu erro.

Aqui está um exemplo do meu código:

package main

import (
    "fmt"
    "time"
)

type Event struct {
    Name      string
    CreatedAt time.Time
    UpdatedAt time.Time // pode não ser definido
}

func main() {
    e := Event{
        Name: "Evento de teste",
        // UpdatedAt não definido
    }
    
    // Tentando verificar se UpdatedAt foi definido
    if e.UpdatedAt == nil {  // Erro de compilação
        fmt.Println("UpdatedAt não definido")
    }
    
    fmt.Println(e.UpdatedAt) // Exibe: 0001-01-01 00:00:00 +0000 UTC
}