Zaman için sıfır değeri nedir?


157

Bir hata durumunda, nilhata atar dönmek için çalıştı :

cannot use nil as type time.Time in return argument

Bunun zerodeğeri nedir time.Time?


30
IsZero()Sıfır zamanını tespit etmek için de kullanabilirsiniz .
Matt

Yanıtlar:


156

Boş bir time.Timeyapı değişmezini çağırmak, Go'nun sıfır tarihini döndürür. Böylece, aşağıdaki basılı beyan için:

fmt.Println(time.Time{})

Çıktı:

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

Tamlık uğruna, resmi belgeler açıkça şunları belirtmektedir:

Zaman türünün sıfır değeri 1 Ocak, yıl 1, 00: 00: 00.000000000 UTC'dir.


7
"Hiçbir argümanın iletilmemesi" işlevi bir işlev çağrısı gibi görünmesini sağlar. Herhangi bir alan belirtilmemiş bir yapı değişmezidir. X {}, herhangi bir X için X yapısının sıfır değeridir.
Russ Cox

1
@RussCox Bunun doğru olduğunu düşünmüyorum. Benim durumumda zaman alanım var. Yapımda 'ihmal' özelliği olan zaman. Bu değeri ayarlamazsam, yok sayılmak yerine otomatik olarak 0001-01-01 00:00:00 +0000 UTC değerine ayarlanır.
Gaurav Ojha

1
@GauravOjha Bkz. Golang JSON ile zaman aşımı .
icza

303

Bunun yerine Time.IsZero () işlevini kullanmalısınız:

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.

Gerçekten de, zaman için verilen değerin sıfır olup olmadığı karşılaştırılırsa, aslında kullanılması gereken budur.
Gaurav Ojha

7
Bu karşılaştırma için doğru cevap olsa da, OP karşılaştırma hakkında değil, sıfır değerinin nasıl başlatılacağını sordu. Kabul edilen cevap doğrudur.
mikijov

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.