Rumah >pembangunan bahagian belakang >Golang >Cara Membandingkan Masa Dengan Tepat dalam Go: Bilakah Anda Harus Menggunakan `Equal()` Daripada `==`?

Cara Membandingkan Masa Dengan Tepat dalam Go: Bilakah Anda Harus Menggunakan `Equal()` Daripada `==`?

Susan Sarandon
Susan Sarandonasal
2024-10-25 08:38:02750semak imbas

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

Perbandingan Masa dalam Go

Apabila membandingkan masa dalam Go, adalah penting untuk mempertimbangkan potensi nuansa yang dikaitkan dengan zon waktu dan bacaan jam monoton. Pengendali kesaksamaan (==) membandingkan bukan sahaja kejadian masa tetapi juga lokasi dan bacaan jam monoton.

Untuk menggambarkan perkara ini, pertimbangkan kod berikut:

<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>

Dalam senario ini , perbandingan res != jangkakan akan sentiasa dinilai kepada benar, walaupun masa sebenar yang diwakili oleh kedua-dua res dan jangkaan adalah sama. Ini kerana medan dalam struktur Masa, yang mewakili masa dinding, masa lanjutan, lokasi dan bacaan jam monoton, adalah berbeza untuk setiap kejadian.

Untuk membandingkan masa dengan betul, disyorkan untuk gunakan kaedah res.Equal(expect), yang mengambil kira perbezaan potensi antara medan dalam dan memberikan perbandingan yang lebih tepat. Dokumentasi untuk kaedah Equal menyatakan:

"Perhatikan bahawa operator Go == membandingkan bukan sahaja masa segera tetapi juga Lokasi dan bacaan jam monoton. Oleh itu, nilai Masa tidak boleh digunakan sebagai kunci peta atau pangkalan data tanpa terlebih dahulu menjamin bahawa Lokasi yang sama telah ditetapkan untuk semua nilai, yang boleh dicapai melalui penggunaan kaedah UTC atau Setempat, dan bacaan jam monotonik telah dilucutkan dengan menetapkan t = t.Round(0)."

Dengan menggunakan res.Equal(expect), anda memastikan bahawa perbandingan hanya berdasarkan masa serta-merta dan mengabaikan sebarang potensi perbezaan dalam lokasi atau bacaan jam monotonik.

Atas ialah kandungan terperinci Cara Membandingkan Masa Dengan Tepat dalam Go: Bilakah Anda Harus Menggunakan `Equal()` Daripada `==`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn