Go में time.Time का `शून्य` मान क्या है?


157

एक त्रुटि स्थिति में, मैंने लौटने की कोशिश की nil, जो त्रुटि को फेंकता है:

cannot use nil as type time.Time in return argument

किसका zeroमूल्य है time.Time?


30
और आप IsZero()शून्य समय का पता लगाने के लिए उपयोग कर सकते हैं ।
मैट

जवाबों:


156

एक खाली time.Timeसंरचना को लागू करने से शाब्दिक गो की शून्य तिथि वापस आ जाएगी। इस प्रकार, निम्नलिखित प्रिंट स्टेटमेंट के लिए:

fmt.Println(time.Time{})

आउटपुट है:

0001-01-01 00:00:00 +0000 UTC

पूर्णता के लिए, आधिकारिक दस्तावेज में स्पष्ट रूप से लिखा गया है:

टाइप टाइम का शून्य मान 1 जनवरी, वर्ष 1, 00: 00: 00.000000000 UTC है।


7
"कोई तर्क नहीं पास करना" यह एक फ़ंक्शन कॉल की तरह लगता है। यह एक संरचनात्मक शाब्दिक है जिसमें कोई फ़ील्ड निर्दिष्ट नहीं है। X {} किसी भी X के लिए संरचना X का शून्य मान है।
रस कॉक्स

1
@RussCox मुझे नहीं लगता कि यह सच है। मेरे मामले में, मेरे पास अपनी संरचना में time.Time का एक क्षेत्र है जिसमें 'omitempty' विशेषता है। अगर मैं उस मूल्य को निर्धारित नहीं करता हूं, तो यह स्वतः उपेक्षित होने के बजाय 0001-01-01 00:00:00 +0000 यूटीसी पर सेट हो जाता है।
गौरव ओझा

1
@ गौरव ओझा ने गोलंग जोंस को देखा
icza

301

आपको इसके बजाय Time.IsZero () फ़ंक्शन का उपयोग करना चाहिए:

func (Time) IsZero

func (t Time) IsZero() bool
IsZero reports whether t represents the zero time instant, January 1, year 1, 00:00:00 UTC.

वास्तव में, अगर तुलना की जाए कि क्या समय के लिए दिए गए मूल्य शून्य हैं या नहीं, यह वही है जो वास्तव में उपयोग किया जाना चाहिए।
गौरव ओझा

7
जबकि यह तुलना के लिए सही उत्तर है, ओपी ने तुलना के बारे में नहीं पूछा, बल्कि शून्य मूल्य को कैसे शुरू किया जाए। स्वीकृत उत्तर सही है।
मिकिजॉव

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.