Apabila berurusan dengan jenis data yang berbeza dalam Go, terutamanya apabila membandingkan nilai, ia sering menjadi perlu untuk menukar antara jenis. Satu senario biasa ialah penukaran daripada int64 kepada int. Artikel ini menyediakan pendekatan terbaik untuk penukaran sedemikian, menyerlahkan kemungkinan perangkap.
Proses menukar int64 kepada int dalam Go adalah mudah. Untuk melakukan penukaran, hanya gunakan ungkapan penukaran jenis:
var a int var b int64 int64(a) < b
Apabila membandingkan nilai jenis yang berbeza, adalah penting untuk menukar jenis yang lebih kecil kepada jenis yang lebih besar. Menukar ke arah lain boleh mengakibatkan pemangkasan data dan perbandingan yang salah.
Pertimbangkan kod Go berikut:
var x int32 = 0 var y int64 = math.MaxInt32 + 1 // y == 2147483648 if x < int32(y) { // this evaluates to false, because int32(y) is -2147483648 }
Dalam kes ini, cuba membandingkan x kepada int32(y) akan mengakibatkan penilaian yang salah kerana int32(y) memotong nilai sebenar y dan secara berkesan mengubahnya kepada -2147483648. Untuk mengelakkan isu sedemikian, anda dinasihatkan untuk menukar jenis yang lebih kecil kepada jenis yang lebih besar.
Dalam contoh kod khusus anda, menukar maxInt kepada int memerlukan pelarasan berikut:
for a := 2; a < int(maxInt); a++ {
Pengubahsuaian ini memastikan perbandingan dilakukan dengan betul. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa jika maxInt melebihi nilai maksimum jenis int pada sistem anda, penukaran mungkin gagal. Untuk mengurangkan risiko ini, pertimbangkan untuk menggunakan jenis data yang lebih besar, seperti int64, untuk maxInt untuk mengelakkan kemungkinan limpahan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar int64 kepada int dalam Go dengan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!