Mengapa Membandingkan Dua Struktur Masa dengan Nilai Tarikh dan Masa yang Sama Menggunakan "==" Menghasilkan Salah?
Dalam konteks Go pengaturcaraan, masa. Jenis masa ialah struct yang mewakili titik masa tertentu. Apabila membandingkan dua kejadian masa. Masa menggunakan operator kesamaan ==, adalah penting untuk memahami nuansa operasi ini.
Secara lalai, apabila membandingkan masa. Nilai masa dengan ==, bukan sahaja nilai masa tetapi juga lokasi yang berkaitan dinilai untuk kesaksamaan. Struktur masa.Masa termasuk *medan Lokasi, yang menentukan zon waktu atau lokasi nilai masa.
Dalam contoh kod yang disediakan, dua kejadian masa.Masa (t1 dan t2) dibuat dan kemudian dibandingkan . Walaupun komponen masa mereka adalah setara, medan *Lokasi mereka mungkin merujuk lokasi yang berbeza. Perbezaan lokasi ini menyebabkan perbandingan == kembali palsu.
Untuk mengesahkan ini, kod menunjukkan bahawa t1.Location() dan t2.Location() adalah tidak sama, walaupun kedua-duanya mewakili UTC yang sama zon waktu. Ini kerana dalam Go, walaupun dua lokasi merujuk kepada zon waktu yang sama, ia mungkin bukan tika *Lokasi yang sama.
Untuk memastikan == kembali benar untuk nilai masa dengan komponen dan lokasi masa yang sama , seseorang boleh menggunakan kaedah Time.UTC() atau Time.Local() untuk menetapkan *Lokasi yang sama secara eksplisit kepada kedua-dua nilai. Sebagai alternatif, kaedah Time.Equal() boleh digunakan, yang mengabaikan lokasi apabila membandingkan nilai masa dan hanya mempertimbangkan komponen masa.
Atas ialah kandungan terperinci Mengapakah `==` Mengembalikan `salah` Apabila Membandingkan Struktur `masa.Masa` Pergi yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!