Amalan terbaik untuk menukar rentetan kepada nombor di Golang, contoh kod khusus diperlukan
Di Golang, penukaran rentetan kepada nombor ialah operasi biasa. Proses ini juga boleh dipanggil "menghuraikan" rentetan, kerana ia menghuraikan rentetan ke dalam jenis angka yang sepadan. Jenis berangka yang berbeza (seperti int, apungan, dll.) mempunyai peraturan penghuraian yang berbeza, jadi dalam praktiknya adalah perlu untuk memilih fungsi penghuraian yang betul.
Dalam artikel ini, kami akan memperkenalkan amalan terbaik untuk menukar rentetan kepada nombor di Golang, termasuk beberapa masalah dan penyelesaian biasa, serta contoh kod khusus. . seni bina (int32 atau int64). Contohnya: 42, -7, dsb.
uint: Mewakili jenis integer tidak bertanda, menduduki 4 bait atau 8 bait, bergantung pada seni bina sistem (uint32 atau uint64). Contohnya: 42, 3, dsb.
float: Mewakili jenis nombor terapung ketepatan tunggal dan dua ketepatan, masing-masing float32 dan float64. Contohnya: 3.14 atau -0.1.
Limpahan: Jika nombor yang diwakili oleh rentetan melebihi julat yang boleh diwakili oleh jenis angka, limpahan berlaku. Contohnya, apabila menukar rentetan "18446744073709551616" kepada jenis uint64, limpahan akan berlaku kerana nilai maksimum uint64 ialah 18446744073709551615.
Kehilangan ketepatan: Apabila menukar rentetan titik terapung kepada jenis integer, ia akan menyebabkan kehilangan ketepatan. Sebagai contoh, apabila menukar rentetan "3.14" kepada menaip int, anda akan mendapat 3 bukannya 4.
Format rentetan yang salah: Apabila menggunakan siri Parse fungsi untuk menghuraikan rentetan, jika rentetan itu tidak sah, ralat dikembalikan (seperti strconv. Atoi dan fungsi strconv.ParseInt), kita boleh menangani ralat ini. Jika kami tidak pasti sama ada rentetan itu terbentuk dengan baik, kami boleh menggunakan fungsi seperti strconv.CanParseInt untuk menyemak.
Limpahan: Apabila parameter ketiga fungsi ParseInt atau ParseUint ialah 0, pangkalan akan ditentukan secara automatik berdasarkan awalan rentetan, jadi kita perlu memberi perhatian kepada pangkalan yang diwakili oleh rentetan. Jika kami tidak pasti tentang asas rentetan (seperti "0x42" atau "42"), kami boleh menggunakan strconv.ParseInt("42", 0, 0) untuk menghuraikan rentetan ke dalam int jenis lalai Go.
Kehilangan ketepatan: Apabila menukar rentetan titik terapung kepada jenis integer, kita boleh menggunakan math.Round() untuk melaksanakan operasi seperti pembundaran untuk memastikan nilai yang ditukar adalah betul. Operasi serupa juga diperlukan apabila kita menukar rentetan dengan bilangan digit selepas titik perpuluhan.
package main import ( "fmt" "math" "strconv" ) func main() { // 将字符串转换为int类型 if i, err := strconv.Atoi("42"); err == nil { fmt.Println(i) } // 解析包含负号的字符串为int类型 if i, err := strconv.ParseInt("-42", 10, 64); err == nil { fmt.Println(i) } // 将字符串转换为uint类型 if u, err := strconv.ParseUint("42", 10, 64); err == nil { fmt.Println(u) } // 将浮点数字符串转换为整数类型,并确保精度正确 if f, err := strconv.ParseFloat("3.14", 64); err == nil { fmt.Println(math.Round(f)) } // 将带符号的浮点数字符串转换为复数类型 if c, err := strconv.ParseComplex("-1.2-0.8i", 128); err == nil { fmt.Println(c) } }
Atas ialah kandungan terperinci Amalan terbaik Golang untuk menukar rentetan kepada nombor. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!