Masa.Masa, struct dalam Go, menempatkan bukan sahaja komponen masa (saat dan nanosaat) tetapi juga penunjuk lokasi . Dalam membandingkan contoh struct melalui ==, semua medan tertakluk kepada pemeriksaan.
Spesifikasi Go menentukan:
Struct values are comparable if all their fields are comparable. Two struct values are equal if their corresponding non-blank fields are equal.
Oleh itu, t1 == t2 membandingkan semua medan, termasuk lokasi, yang adalah petunjuk yang berbeza. Eksklusiviti ini adalah walaupun kedua-dua lokasi mewakili zon waktu yang sama.
Sebagai peringatan, dokumentasi masa.Masa memberi amaran terhadap penggunaan nilai Masa sebagai pengecam dalam peta atau pangkalan data tanpa menjamin lokasi yang konsisten. Penyelesaiannya terletak pada penggunaan kaedah UTC atau Setempat untuk memastikan penunjuk lokasi yang sama.
Sebagai alternatif, seseorang boleh memanfaatkan kaedah In() untuk mewujudkan penunjuk lokasi yang dikehendaki, seperti yang ditunjukkan dalam GoSpec.
Dengan menetapkan penunjuk lokasi yang setara, struktur Masa dengan komponen tarikh dan masa yang sama kini akan menghasilkan benar apabila dibandingkan melalui ==. Kaedah Equal() bagaimanapun, akan secara konsisten mengembalikan true tanpa mengira lokasi.
Atas ialah kandungan terperinci `Masa.Masa` Pergi: Mengapa `==` Kadang-kadang Gagal Apabila Membandingkan Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!