当前位置: 首页 > 面试题库 >

在golang html / template中格式化float

辛意智
2023-03-14
问题内容

我想将float64值格式化为golang
html/templateindex.html文件中说的2个小数位。在.go文件中,我可以像这样格式化:

strconv.FormatFloat(value, 'f', 2, 32)

但是我不知道如何在模板中格式化它。我正在使用gin-gonic/gin后端框架。任何帮助将不胜感激。谢谢。


问题答案:

您有很多选择:

  • 您可以决定将数字格式化,例如使用,fmt.Sprintf()然后再将其传递给模板执行(n1
  • 或者,您可以在定义String() string方法的地方创建自己的类型,并根据自己的喜好格式化。模板引擎(n2)对此进行了检查和使用。
  • 您也可以printf直接从模板直接调用,并使用自定义格式字符串n3)。
  • 即使您可以printf直接调用,也需要传递format string。如果您不想每次都这样做,可以注册一个自定义函数来执行此操作(n4

请参阅以下示例:

type MyFloat float64

func (mf MyFloat) String() string {
    return fmt.Sprintf("%.2f", float64(mf))
}

func main() {
    t := template.Must(template.New("").Funcs(template.FuncMap{
        "MyFormat": func(f float64) string { return fmt.Sprintf("%.2f", f) },
    }).Parse(templ))
    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 {
        fmt.Println(err)
    }
}

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

输出(在Go Playground上尝试):

Number:         n0 = 3.1415
Formatted:      n1 = 3.14
Custom type:    n2 = 3.14
Calling printf: n3 = 3.14
MyFormat:       n4 = 3.14


 类似资料:
  • 我正在玩我的eclipse格式化程序。 我目前被卡住,无法格式化空的新行。 我知道我可以使用CTRL+SHIFT+F。 但是我希望它在文件保存时自动发生。 下面是另一个例子 此外,我想选择是否应该在ex one结构声明后或在花括号后自动缩进为无空行。

  • 本文向大家介绍使用Template格式化Python字符串的方法,包括了使用Template格式化Python字符串的方法的使用技巧和注意事项,需要的朋友参考一下 对Python字符串,除了比较老旧的%,以及用来替换掉%的format,及在python 3.6中加入的f这三种格式化方法以外,还有可以使用Template对象来进行格式化。 from string import Template,可以

  • 我们可以看到格式化就是通过格式字符串得到特定格式: format!("{}", foo) -> "3735928559" format!("0x{:X}", foo) -> "0xDEADBEEF" format!("0o{:o}", foo) -> "0o33653337357" 根据使用的参数类型,同样的变量(foo)能够格式化成不同的形式:X, o 和未指定形式。 这个格式化的功能是通过 t

  • 格式化 格式化是一件主观的事。如同这里的许多规则一样,这里并没有一定/立刻需要遵守的规则。可以在这里完成格式的自动化。 大小写一致 JS 是弱类型语言,合理的采用大小写可以告诉你关于变量/函数等的许多消息。 这些规则是主观定义的,团队可以根据喜欢进行选择。重点在于无论选择何种风格,都需要注意保持一致性。 反例: var DAYS_IN_WEEK = 7; var daysInMonth = 30;

  • Formatting 格式化 Formatting issues are the most contentious but the least consequential. People can adapt to different formatting styles but it’s better if they don’t have to, and less time is devoted t

  • 格式化 代码格式化的规范并不重要,只要它们实用。它的定义形式没有先天的好与坏,几乎每个人都有自己的偏好。然而,对于一贯地采用同一格式化规则的总会增加可读性。已经熟悉某种特定风格的读者不必非要去掌握另一套当地习惯,或译解另一个角落里的语言语法。 这对Scala来说也特别重要,因为它的语法高度的重叠。一个例子是方法调用:方法调用可以用“.”后边跟圆括号,或不使用“.”,后边用空格加不带圆括号(针对空元