Avatar ·

Was ist der Nullwert für time.Time in Go und wie überprüft man, ob eine Zeitvariable leer ist?

Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und bin auf eine unklare Situation bei der Arbeit mit dem Paket time gestoßen.

Ich habe eine Struktur, in der eines der Felder ein Datum und eine Uhrzeit ist. Manchmal kann dieses Feld nicht gesetzt sein (null aus anderen Sprachen). In PHP oder JavaScript würde ich einfach auf null prüfen, aber in Go gibt es diesen Luxus nicht. Ich habe versucht, nil zu verwenden, aber der Compiler hat einen Fehler ausgegeben.

Hier ist ein Beispiel meines Codes:

package main

import (
    "fmt"
    "time"
)

type Event struct {
    Name      string
    CreatedAt time.Time
    UpdatedAt time.Time // kann nicht gesetzt sein
}

func main() {
    e := Event{
        Name: "Testereignis",
        // UpdatedAt setze ich nicht
    }
    
    // Versuche zu prüfen, ob UpdatedAt gesetzt ist
    if e.UpdatedAt == nil {  // Kompilierungsfehler
        fmt.Println("UpdatedAt ist nicht gesetzt")
    }
    
    fmt.Println(e.UpdatedAt) // Gibt aus: 0001-01-01 00:00:00 +0000 UTC
}