為什麼使用「==」比較兩個有相同日期和時間值的時間結構會導致 False?
在 Go 環境中程式設計中,time.Time 類型是一個表示特定時間點的結構體。使用相等運算子 == 比較兩個 time.Time 實例時,了解此操作的細微差別非常重要。
預設情況下,當 time.Time 值與 == 進行比較時,不僅是時間值,還包括時間值評估相關位置是否相等。 time.Time 結構體包含一個 *Location 字段,它指定時間值的時區或位置。
在提供的程式碼範例中,建立了兩個 time.Time 實例(t1 和 t2),然後進行比較。雖然它們的時間組成部分是相同的,但它們的 *Location 欄位可能引用不同的位置。這種位置差異導致 == 比較回傳 false。
為了驗證這一點,程式碼示範了 t1.Location() 和 t2.Location() 並不相同,即使它們都代表相同的 UTC時區。這是因為在 Go 中,即使兩個位置引用相同的時區,它們也可能不是 *Location 的同一個實例。
確保== 對於相同時間分量和位置的時間值傳回true ,可以使用Time.UTC() 或Time.Local() 方法將相同的*Location 明確指派給這兩個值。或者,可以使用 Time.Equal() 方法,該方法在比較時間值時忽略位置,僅考慮時間分量。
以上是為什麼比較相同的 Go `time.Time` 結構時 `==` 回傳 `false`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!