ホームページ > バックエンド開発 > Golang > 同じ Go `time.Time` 構造体を比較すると、なぜ `==` が `false` を返すのでしょうか?

同じ Go `time.Time` 構造体を比較すると、なぜ `==` が `false` を返すのでしょうか?

Patricia Arquette
リリース: 2024-12-17 15:18:11
オリジナル
275 人が閲覧しました

Why Does `==` Return `false` When Comparing Identical Go `time.Time` Structs?

「==」を使用して同じ日付と時刻の値を持つ 2 つの time 構造体を比較すると False になるのはなぜですか?

Go のコンテキストにおいてプログラミングでは、time.Time 型は特定の時点を表す構造体です。等価演算子 == を使用して 2 つの time.Time インスタンスを比較する場合、この操作のニュアンスを理解することが重要です。

デフォルトでは、time.Time 値を == と比較する場合、時間値だけでなく、関連付けられた位置が等しいかどうか評価されます。 time.Time 構造体には、時間値のタイム ゾーンまたは場所を指定する *Location フィールドが含まれています。

提供されたコード例では、2 つの time.Time インスタンス (t1 と t2) が作成され、比較されます。 。それらの時間コンポーネントは同等ですが、*Location フィールドは異なる場所を参照する場合があります。この位置の違いにより、== 比較は false を返します。

これを検証するために、コードは、t1.Location() と t2.Location() が、両方とも同じ UTC を表しているにもかかわらず、同一ではないことを示しています。タイムゾーン。これは、Go では、2 つの場所が同じタイム ゾーンを参照している場合でも、*Location の同じインスタンスではない可能性があるためです。

== が同じ時間コンポーネントと場所を持つ時間値に対して true を返すようにするためです。 、Time.UTC() または Time.Local() メソッドを使用して、両方の値に同じ *Location を明示的に割り当てることができます。あるいは、Time.Equal() メソッドを使用することもできます。このメソッドは、時間値を比較するときに位置を無視し、時間コンポーネントのみを考慮します。

以上が同じ Go `time.Time` 構造体を比較すると、なぜ `==` が `false` を返すのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート