Heim >Backend-Entwicklung >Golang >Warum gibt „==' beim Vergleich identischer Go-„time.Time'-Strukturen „false' zurück?
Warum führt der Vergleich zweier Zeitstrukturen mit identischen Datums- und Uhrzeitwerten unter Verwendung von „==" zu einem falschen Ergebnis?
Im Kontext von Go Bei der Programmierung ist der Typ time.Time eine Struktur, die einen bestimmten Zeitpunkt darstellt. Wenn Sie zwei time.Time-Instanzen mit dem Gleichheitsoperator == vergleichen, ist es wichtig, die Nuancen dieser Operation zu verstehen.
Standardmäßig werden beim Vergleich von time.Time-Werten mit == nicht nur die Zeitwerte, sondern auch die Werte berücksichtigt Die zugehörigen Standorte werden auf Gleichheit bewertet. Die time.Time-Struktur enthält ein *Location-Feld, das die Zeitzone oder den Ort des Zeitwerts angibt.
Im bereitgestellten Codebeispiel werden zwei time.Time-Instanzen (t1 und t2) erstellt und dann verglichen . Während ihre Zeitkomponenten gleichwertig sind, können ihre *Location-Felder auf unterschiedliche Orte verweisen. Dieser Standortunterschied führt dazu, dass der ==-Vergleich „false“ zurückgibt.
Um dies zu überprüfen, zeigt der Code, dass t1.Location() und t2.Location() nicht identisch sind, obwohl sie beide dieselbe UTC darstellen Zeitzone. Dies liegt daran, dass in Go zwei Standorte, selbst wenn sie sich auf dieselbe Zeitzone beziehen, möglicherweise nicht dieselbe Instanz von *Location sind.
Um sicherzustellen, dass == für Zeitwerte mit identischen Zeitkomponenten und Standorten „true“ zurückgibt , kann man die Methoden Time.UTC() oder Time.Local() verwenden, um beiden Werten explizit denselben *Location zuzuweisen. Alternativ kann die Methode Time.Equal() verwendet werden, die beim Vergleich von Zeitwerten den Ort ignoriert und nur die Zeitkomponenten berücksichtigt.
Das obige ist der detaillierte Inhalt vonWarum gibt „==' beim Vergleich identischer Go-„time.Time'-Strukturen „false' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!