2014-04-14 10 views
55

एक त्रुटि हालत में, मैं nil वापसी करने की कोशिश की है, जो त्रुटि फेंकता है:समय के लिए `शून्य` मान क्या है। समय में समय?

cannot use nil as type time.Time in return argument 

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

+12

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

उत्तर

60

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

fmt.Println(time.Time{}) 

उत्पादन होता है:

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

पूर्णता के लिए, official documentation स्पष्ट रूप से कहा: समय के लिए

The zero value of type Time is January 1, year 1, 00:00:00.000000000 UTC.

+5

"कोई तर्क नहीं गुजरना" इसे फ़ंक्शन कॉल की तरह ध्वनि बनाता है। यह एक फ़ील्ड शाब्दिक है जिसमें कोई फ़ील्ड निर्दिष्ट नहीं है। एक्स {} किसी भी एक्स –

+0

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

+0

@ गौरवोजा देखें [गोलांग JSON omitempty समय के साथ। समय फ़ील्ड] (http://stackoverflow.com/questions/32643815/golang-json-omitempty-with-time-time-field/32646035#32646035)। – icza

125

वाई कहां बजाय 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. 
+16

यह स्वीकार्य उत्तर होना चाहिए। –

+0

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

संबंधित मुद्दे