Menukar int32 kepada Rentetan dalam Golang Tanpa Penukaran Perantaraan
Menukar int32 kepada rentetan di Golang ialah tugas biasa yang boleh dicapai menggunakan pelbagai teknik. Walaupun sesetengah pendekatan memerlukan penukaran perantaraan kepada int atau int64, adalah mungkin untuk mencapai penukaran langsung tanpa langkah ini.
fmt.Sprint(i)
Yang paling mudah dan paling mudah kaedah yang cekap ialah menggunakan fmt.Sprint(i). Fungsi ini menukarkan sebarang jenis antara muka{} kepada rentetan, termasuk int32. Ia secara dalaman melaksanakan pemformatan yang diperlukan untuk mewakili nilai sebagai rentetan.
Fungsi Penukaran Tersuai
Untuk senario kritikal prestasi, fungsi penukaran tersuai boleh menyediakan penyelesaian terpantas . Coretan kod berikut melaksanakan fungsi yang menukar int32 kepada rentetan tanpa penukaran perantaraan:
<code class="go">func String(n int32) string { buf := [11]byte{} pos := len(buf) i := int64(n) signed := i < 0 if signed { i = -i } for { pos-- buf[pos], i = '0'+byte(i%10), i/10 if i == 0 { if signed { pos-- buf[pos] = '-' } return string(buf[pos:]) } } }</code>
Menanda Aras Pendekatan Berbeza
Berikut ialah perbandingan penanda aras pelbagai kaedah:
<code class="go">package main import ( "fmt" " strconv" " time" ) func main() { var s string i := int32(-2147483648) t := time.Now() for j := 0; j < 50000000; j++ { s = String(i) //5.5923198s //s = String2(i) //5.5923199s //s = strconv.FormatInt(int64(i), 10) // 5.9133382s //s = strconv.Itoa(int(i)) //5.9763418s //s = fmt.Sprint(i) // 13.5697761s } fmt.Println(time.Since(t)) fmt.Println(s) } func String(n int32) string { ... } ...</code>
Berikut ialah hasil prestasi:
Method | Time (seconds) |
---|---|
String(i) | 5.5923198 |
fmt.Sprint(i) | 13.5697761 |
strconv.Itoa(int(i)) | 5.9763418 |
strconv.FormatInt(int64(i), 10) | 5.9133382 |
Seperti yang terbukti daripada penanda aras, fmt.Sprint(i) memberikan prestasi terbaik, diikuti dengan fungsi penukaran tersuai String(i) . Kaedah lain yang melibatkan penukaran perantaraan adalah nyata lebih perlahan.
Kesimpulan
Walaupun menukar int32 kepada rentetan dalam Golang selalunya memerlukan langkah penukaran perantaraan, adalah mungkin untuk melakukan penukaran secara terus . fmt.Sprint(i) menawarkan pendekatan yang paling cekap dan mudah, manakala fungsi penukaran tersuai boleh menyediakan penyelesaian terpantas untuk senario sensitif prestasi.
Atas ialah kandungan terperinci Bagaimanakah cara saya menukar int32 kepada rentetan dalam Golang tanpa penukaran perantaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!