Maison >développement back-end >Golang >Comment formater des nombres à virgule flottante dans les modèles Go HTML ?

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

DDD
DDDoriginal
2024-11-09 00:11:01943parcourir

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}}`

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

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