Maison  >  Article  >  développement back-end  >  Comment puis-je formater des entiers avec des milliers de virgules dans Go ?

Comment puis-je formater des entiers avec des milliers de virgules dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 18:57:30566parcourir

How can I format integers with thousands commas in Go?

Formatage d'entiers avec des milliers de virgules dans Go

La fonction fmt.Printf intégrée de Go ne prend pas en charge nativement la sortie d'entiers avec des milliers de virgules. Cependant, il existe plusieurs façons d'y parvenir.

Une option consiste à utiliser le package golang.org/x/text/message, qui fournit un formatage localisé pour toute langue prise en charge par le CLDR Unicode. Voici un exemple :

<code class="go">package main

import (
    "golang.org/x/text/language"
    "golang.org/x/text/message"
)

func main() {
    p := message.NewPrinter(language.English)
    p.Printf("%d\n", 1000)

    // Output:
    // 1,000
}</code>

Ce code utilise les paramètres régionaux de langue anglaise, mais vous pouvez spécifier n'importe quel autre paramètre régional pris en charge si vous le souhaitez.

Une autre option consiste à utiliser une bibliothèque tierce, telle que comme [github.com/AlekSi/decimal](https://github.com/AlekSi/decimal). Cette bibliothèque fournit diverses méthodes de formatage des nombres, notamment la possibilité d'ajouter des milliers de virgules. Voici un exemple :

<code class="go">package main

import (
    "github.com/AlekSi/decimal"
)

func main() {
    num := decimal.NewFromFloat(1000)
    str := num.String()

    fmt.Println(str)

    // Output:
    // 1,000
}</code>

Enfin, si vous ne souhaitez utiliser aucune bibliothèque externe, vous pouvez formater manuellement le numéro vous-même. C'est relativement simple à faire. Tout d’abord, vous devez convertir l’entier en chaîne. Ensuite, vous devez insérer des virgules aux emplacements appropriés. Voici comment procéder :

<code class="go">func fmtComma(n int) string {
    str := strconv.Itoa(n)
    formatted := ""

    for i := len(str); i > 0; i -= 3 {
        if i == len(str) {
            formatted = str[:i]
        } else {
            formatted = str[i-3:i] + "," + formatted
        }
    }

    return formatted
}

func main() {
    fmt.Println(fmtComma(1000))

    // Output:
    // 1,000
}</code>

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