
Formatting Floats in Go HTML Templates
In Go HTML templates, you may need to format floating-point values for display. As you mentioned, converting a float64 to a string with strconv.FormatFloat in your .go file is straightforward. However, this approach is not suitable for templates.
Instead, you have several options to format floats within your HTML templates:
-
Option 1: Before populating the template, format the number using fmt.Sprintf in your .go file.
-
Option 2: Create a custom data type and implement the String() method to format the float according to your requirements.
-
Option 3: Directly call fmt.Sprintf within the template, specifying the custom format string.
-
Option 4: Register a custom function within the template to format the float using your preferred format string.
Here's an example code snippet that demonstrates these options:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | import (
"fmt"
"html/template"
"os"
)
type MyFloat float64
func (mf MyFloat) String() string {
return fmt.Sprintf( "%.2f" , float64(mf))
}
func main() {
t, err := template.New( "" ).Funcs(template.FuncMap{
"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}}`
|
Copy after login
When you run this code (e.g., on the Go Playground), you will see the following output:
1 2 3 4 5 | Number: n0 = 3.1415
Formatted: n1 = 3.14
Custom type: n2 = 3.14
Calling printf: n3 = 3.14
MyFormat: n4 = 3.14
|
Copy after login
The above is the detailed content of How to Format Floating-Point Numbers in Go HTML Templates?. For more information, please follow other related articles on the PHP Chinese website!