Heim > Backend-Entwicklung > Golang > So vergleichen Sie Zeiten in Go genau: Wann sollten Sie „Equal()' anstelle von „==' verwenden?

So vergleichen Sie Zeiten in Go genau: Wann sollten Sie „Equal()' anstelle von „==' verwenden?

Susan Sarandon
Freigeben: 2024-10-25 08:38:02
Original
745 Leute haben es durchsucht

How to Compare Times Accurately in Go: When Should You Use `Equal()` Instead of `==`?

Zeitvergleich in Go

Beim Zeitvergleich in Go ist es wichtig, die möglichen Nuancen im Zusammenhang mit Zeitzonen und monotonen Uhrenanzeigen zu berücksichtigen. Der Gleichheitsoperator (==) vergleicht nicht nur die Zeitinstanz, sondern auch den Ort und die monotone Uhranzeige.

Um dies zu veranschaulichen, betrachten Sie den folgenden Code:

<code class="go">expect := time.Date(2016, 12, 12, 1, 2, 3, 4, wib)
t1 := time.Date(2016, 12, 12, 1, 2, 3, 4, time.UTC)
res := GenerateWIB(t1)
if res != expect {
    fmt.Printf("WIB Expect %+v, but get %+v", expect, res)
}</code>
Nach dem Login kopieren

In diesem Szenario , wird der Vergleich res != Expect immer als wahr ausgewertet, auch wenn die tatsächliche Zeit, die von res und Expect dargestellt wird, dieselbe ist. Dies liegt daran, dass die inneren Felder der Zeitstruktur, die die Wandzeit, die erweiterte Zeit, den Ort und den monotonen Uhrstand darstellen, für jede Instanz unterschiedlich sind.

Um die Zeiten korrekt zu vergleichen, wird empfohlen, Folgendes zu tun: Verwenden Sie die Methode res.Equal(expect), die die potenziellen Unterschiede zwischen inneren Feldern berücksichtigt und einen genaueren Vergleich ermöglicht. In der Dokumentation zur Equal-Methode heißt es:

„Beachten Sie, dass der Go ==-Operator nicht nur den Zeitpunkt, sondern auch den Standort und den monotonen Uhrwert vergleicht. Daher sollten Zeitwerte nicht als Karten- oder Datenbankschlüssel verwendet werden.“ ohne zunächst zu garantieren, dass für alle Werte der identische Standort festgelegt wurde, was durch die Verwendung der UTC- oder Local-Methode erreicht werden kann, und dass der monotone Uhrwert durch Setzen von t = t.Round(0) entfernt wurde.“

Durch die Verwendung von res.Equal(expect) stellen Sie sicher, dass der Vergleich ausschließlich auf dem Zeitpunkt basiert und mögliche Unterschiede im Standort oder monotone Uhranzeige ignoriert.

Das obige ist der detaillierte Inhalt vonSo vergleichen Sie Zeiten in Go genau: Wann sollten Sie „Equal()' anstelle von „==' verwenden?. 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