Maison  >  Article  >  développement back-end  >  Comment convertir efficacement int32 en chaîne dans Go ?

Comment convertir efficacement int32 en chaîne dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 10:01:02385parcourir

How to efficiently convert int32 to string in Go?

Conversion de int32 en chaîne dans Go

Il est pratique de convertir int32 en chaîne pour divers scénarios de programmation. Dans Go, il existe plusieurs approches pour réaliser cette conversion.

La solution simple consiste à utiliser fmt.Sprint(i), qui utilise le format par défaut pour les valeurs int32. Cependant, cette méthode implique des conversions internes, ce qui la rend plus lente par rapport aux autres options.

Fonction de conversion personnalisée

Pour des performances optimales, pensez à écrire une fonction de conversion personnalisée :

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

Cette fonction construit de manière itérative la représentation sous forme de chaîne de la valeur int32, ce qui entraîne des performances plus rapides.

Utilisation de strconv.Itoa

Une autre option consiste à utilisez strconv.Itoa(int(i)), qui offre une approche plus rapide par rapport à fmt.Sprint(i) :

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

Cependant, cette méthode nécessite une conversion intermédiaire de int32 en int.

Utilisation de strconv.FormatInt

Semblable à strconv.Itoa, strconv.FormatInt(int64(i), 10) fournit une solution performante pour la conversion int32 en chaîne. Il nécessite une conversion intermédiaire de int32 en int64, mais offre des performances améliorées par rapport à fmt.Sprint(i) :

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

Comparaison des benchmarks

Exécution de benchmarks sur ces conversions méthodes révèle les différences de performances :

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

Comme le montrent les résultats, la fonction de conversion personnalisée (String) et String2 offrent les temps de conversion les plus rapides.

En fin de compte, le choix de la méthode de conversion dépend sur les exigences de performances spécifiques et les considérations de complexité de l’application. Pour les scénarios où la vitesse est critique, la fonction de conversion personnalisée fournit une solution optimale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn