Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar int32 kepada rentetan dengan cekap dalam Go?

Bagaimana untuk menukar int32 kepada rentetan dengan cekap dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 10:01:02385semak imbas

How to efficiently convert int32 to string in Go?

Menukar int32 kepada String in Go

Adalah mudah untuk menukar int32 kepada rentetan untuk pelbagai senario pengaturcaraan. Dalam Go, terdapat berbilang pendekatan untuk mencapai penukaran ini.

Penyelesaian yang mudah ialah menggunakan fmt.Sprint(i), yang menggunakan format lalai untuk nilai int32. Walau bagaimanapun, kaedah ini melibatkan penukaran dalaman, menjadikannya lebih perlahan berbanding pilihan lain.

Fungsi Penukaran Tersuai

Untuk prestasi optimum, pertimbangkan untuk menulis fungsi penukaran tersuai:

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:])
        }
    }
}

Fungsi ini secara berulang membina perwakilan rentetan nilai int32, menghasilkan prestasi yang lebih pantas.

Menggunakan strconv.Itoa

Pilihan lain ialah dengan gunakan strconv.Itoa(int(i)), yang menawarkan pendekatan yang lebih pantas berbanding fmt.Sprint(i):

s := strconv.Itoa(int(i))

Walau bagaimanapun, kaedah ini memerlukan penukaran perantaraan daripada int32 kepada int.

Menggunakan strconv.FormatInt

Serupa dengan strconv.Itoa, strconv.FormatInt(int64(i), 10) menyediakan penyelesaian berprestasi untuk penukaran int32 kepada rentetan. Ia memerlukan penukaran perantaraan daripada int32 kepada int64, tetapi menawarkan prestasi yang lebih baik berbanding fmt.Sprint(i):

s := strconv.FormatInt(int64(i), 10)

Perbandingan Penanda Aras

Menjalankan penanda aras pada penukaran ini kaedah mendedahkan perbezaan prestasi:

String:      5.5923198s
String2:     5.5923199s
strconv.Itoa: 5.9763418s
strconv.FormatInt:  5.9133382s
fmt.Sprint:  13.5697761s

Seperti yang terbukti daripada keputusan, fungsi penukaran tersuai (String) dan String2 menawarkan masa penukaran terpantas.

Akhirnya, pilihan kaedah penukaran bergantung mengenai keperluan prestasi khusus dan pertimbangan kerumitan aplikasi. Untuk senario di mana kelajuan adalah kritikal, fungsi penukaran tersuai menyediakan penyelesaian yang optimum.

Atas ialah kandungan terperinci Bagaimana untuk menukar int32 kepada rentetan dengan cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn