Heim > Backend-Entwicklung > Golang > Go's „time.Time': Warum schlägt „==' beim Zeitvergleich manchmal fehl?

Go's „time.Time': Warum schlägt „==' beim Zeitvergleich manchmal fehl?

Mary-Kate Olsen
Freigeben: 2024-12-27 02:12:22
Original
461 Leute haben es durchsucht

Go's `time.Time`: Why Does `==` Sometimes Fail When Comparing Times?

Vergleich von Zeitstrukturen: Warum Differenz vs. Gleichheit

Time.Time, eine Struktur in Go, enthält nicht nur Zeitkomponenten (Sekunden und Nanosekunden), sondern auch einen Standortzeiger . Beim Vergleich von Strukturinstanzen über == werden alle Felder untersucht.

Die Go-Spezifikation schreibt Folgendes vor:

Struct values are comparable if all their fields are comparable. Two struct values are equal if their corresponding non-blank fields are equal.
Nach dem Login kopieren

Daher vergleicht t1 == t2 alle Felder, einschließlich der Position, die sind eindeutige Hinweise. Diese Exklusivität gilt, obwohl beide Standorte dieselbe Zeitzone darstellen.

Zur Erinnerung: Die time.Time-Dokumentation warnt davor, Zeitwerte als Bezeichner in Karten oder Datenbanken zu verwenden, ohne konsistente Standorte zu garantieren. Die Lösung liegt in der Verwendung der UTC- oder Local-Methoden, um identische Standortzeiger sicherzustellen.

Alternativ kann man die In()-Methode nutzen, um den gewünschten Standortzeiger festzulegen, wie in der GoSpec gezeigt.

Durch das Setzen äquivalenter Ortszeiger liefern Zeitstrukturen mit identischen Datums- und Zeitkomponenten nun „true“, wenn sie über == verglichen werden. Die Equal()-Methode gibt jedoch unabhängig von den Standorten stets „true“ zurück.

Das obige ist der detaillierte Inhalt vonGo's „time.Time': Warum schlägt „==' beim Zeitvergleich manchmal fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage