Avatar ·

Go में time.Time का शून्य मान (zero value) क्या है और समय चर खाली है या नहीं कैसे जांचें?

सभी को नमस्कार! मैंने अभी-अभी Go सीखना शुरू किया है और time.Time प्रकार के साथ काम करते समय एक अजीब स्थिति का सामना किया।

मेरे पास उपयोगकर्ता डेटा संग्रहीत करने के लिए एक struct है:

type User struct {
    ID        int
    Name      string
    CreatedAt time.Time
    UpdatedAt time.Time
}

जब मैं स्पष्ट रूप से समय निर्दिष्ट किए बिना एक नया उपयोगकर्ता बनाता हूं, तो मुझे उम्मीद है कि CreatedAt और UpdatedAt फ़ील्ड null या nil होंगे, जैसे अन्य भाषाओं (Java, C#) में होता है। लेकिन Go में मैं उन्हें nil असाइन नहीं कर सकता — कंपाइलर त्रुटि देता है।

मैंने इस तरह प्रयास किया:

var u User
fmt.Println(u.CreatedAt) // आउटपुट: 0001-01-01 00:00:00 +0000 UTC
fmt.Println(u.CreatedAt == nil) // कंपाइल त्रुटि: cannot convert nil to type time.Time

प्रश्न:

  1. time.Time का डिफ़ॉल्ट मान (zero value) क्या है?
  2. यह nil क्यों नहीं है?
  3. कैसे जांचें कि time.Time चर खाली है या नहीं?