Maison > développement back-end > Golang > le corps du texte

Comment formater des nombres à virgule flottante dans les modèles Go HTML ?

DDD
Libérer: 2024-11-09 00:11:01
original
870 Les gens l'ont consulté

How to Format Floating-Point Numbers in Go HTML Templates?

Formatage des flottants dans les modèles HTML Go

Dans les modèles HTML Go, vous devrez peut-être formater les valeurs à virgule flottante pour l'affichage. Comme vous l'avez mentionné, convertir un float64 en chaîne avec strconv.FormatFloat dans votre fichier .go est simple. Cependant, cette approche ne convient pas aux modèles.

Au lieu de cela, vous disposez de plusieurs options pour formater les flottants dans vos modèles HTML :

  • Option 1 : Avant de remplir le modèle, formatez le numéro en utilisant fmt.Sprintf dans votre fichier .go.
  • Option 2 : Créez un type de données personnalisé et implémentez la méthode String() pour formater le float en fonction de votre exigences.
  • Option 3 : Appelez directement fmt.Sprintf dans le modèle, en spécifiant la chaîne de format personnalisée.
  • Option 4 : Enregistrez un fichier personnalisé fonction dans le modèle pour formater le flottant en utilisant votre chaîne de format préférée.

Voici un exemple d'extrait de code qui illustre ces options :

import (
    "fmt"
    "html/template"
    "os"
)

// MyFloat is a custom type for formatting floats.
type MyFloat float64

// String implements the String() method for converting MyFloat to a string.
func (mf MyFloat) String() string {
    return fmt.Sprintf("%.2f", float64(mf))
}

func main() {
    t, err := template.New("").Funcs(template.FuncMap{
        // Register the MyFormat function to format floats using a custom format string.
        "MyFormat": func(f float64) string { return fmt.Sprintf("%.2f", f) },
    }).Parse(templ)
    if err != nil {
        panic(err)
    }

    m := map[string]interface{}{
        "n0": 3.1415,
        "n1": fmt.Sprintf("%.2f", 3.1415),
        "n2": MyFloat(3.1415),
        "n3": 3.1415,
        "n4": 3.1415,
    }

    if err := t.Execute(os.Stdout, m); err != nil {
        panic(err)
    }
}

const templ = `
Number:         n0 = {{.n0}}
Formatted:      n1 = {{.n1}}
Custom type:    n2 = {{.n2}}
Calling printf: n3 = {{printf "%.2f" .n3}}
MyFormat:       n4 = {{MyFormat .n4}}`
Copier après la connexion

Lorsque vous exécutez ce code (par exemple, sur le Go Playground), vous verrez le résultat suivant :

Number:         n0 = 3.1415
Formatted:      n1 = 3.14
Custom type:    n2 = 3.14
Calling printf: n3 = 3.14
MyFormat:       n4 = 3.14
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal