Perbandingan Masa Go: Membongkar Misteri Penukaran Zon Waktu
Dalam bidang manipulasi masa dalam Go, tugas biasa melibatkan penukaran masa zon. Walau bagaimanapun, kadangkala walaupun fungsi yang paling mudah boleh membawa kepada hasil yang tidak dijangka. Mari terokai isu yang dilaporkan oleh pembangun semasa cuba menukar masa UTC kepada 0700 WIB.
Pemaju mengarang dua fungsi: GenerateWIB, yang menukar masa kepada 0700 WIB dan GenerateUTC, yang menukar masa kepada UTC . Walaupun GenerateUTC menunjukkan prestasi yang sempurna, GenerateWIB secara konsisten gagal. Coretan kod yang disediakan oleh pembangun adalah seperti 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>
Perbandingan res != jangkakan secara konsisten dikembalikan palsu, walaupun jangkaan bahawa kedua-dua res dan jangkaan mewakili titik masa yang sama. Dengan bingung, pembangun mempersoalkan sama ada mereka terlepas sesuatu.
Jawapannya terletak pada sifat rumit zaman Go. Struktur masa. Seperti yang didedahkan dalam dokumentasi, operator == yang digunakan dalam perbandingan menilai bukan sahaja masa segera tetapi juga Lokasi dan bacaan jam monotonic yang dikaitkan dengan masa.Nilai.
Untuk membandingkan dua nilai masa dengan tepat, . Kaedah Equal() harus digunakan. Kaedah ini memastikan perbandingan mempertimbangkan semua aspek nilai masa yang berkaitan, termasuk masa mutlaknya, Lokasi dan bacaan jam monoton.
Kesimpulannya, apabila bekerja dengan penukaran masa dalam Go, adalah penting untuk memahami kerumitan masa.Struktur masa. Dengan memanfaatkan kaedah .Equal() untuk perbandingan masa, pembangun boleh mengelakkan hasil yang tidak dijangka dan memastikan hasil yang tepat.
Atas ialah kandungan terperinci Mengapakah Penukaran Zon Masa Pergi saya Tidak Berfungsi? Menyelam Lebih Dalam ke Perbandingan `masa.Masa`. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!