Go 時間の比較: 同一時間間の相違点を明らかにする
Go プログラミングの領域では、時間値の等しいかどうかを判断することができます。気の遠くなるような仕事。次の状況を考えてみましょう。特定の時刻のタイムゾーンを UTC から 0700 WIB に変換することを目的としています。これを実現するために、2 つの関数を作成しました。タイム ゾーンのみを 0700 WIB に変更する GenerateWIB と、タイム ゾーンを UTC に変更する GenerateUTC です。 GenerateUTC はシームレスに動作しますが、GenerateWIB は一貫して不一致を報告します。
さらに調査すると、この不一致は時間値を比較するための == 演算子の単純な使用から生じていることが明らかになります。ただし、time.Time 型は、この目的のために特別に設計された謎めいた .Equal() メソッドを提供します。
.Equal() の詳細
.Equal()この方法では、時刻だけでなく、場所や単調な時計の読み取り値も考慮して、時間の値を注意深く調べます。これらの要素は、同じ時点を表す Time 値を区別する際に重要な役割を果たします。
理論的根拠の探索
.Equal() とは異なり、Go == 演算子、時間の内部フィールドを直接比較します。時間構造: Wall、Ext、および loc。 Time 構造体が構築されると、これらのフィールドは同一の時間インスタンスに対してさまざまな値を保持できます。
時間比較のベスト プラクティス
Go で正確な時間比較を保証するには、次のことをお勧めします。次のガイドラインに注意してください:
以上が## Go の `==` 演算子が時間値を正確に比較できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。