首頁  >  文章  >  後端開發  >  如何在 Go HTML 範本中設定浮點數格式?

如何在 Go HTML 範本中設定浮點數格式?

DDD
DDD原創
2024-11-09 00:11:01844瀏覽

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

在Go HTML 範本中格式化浮點數

在Go HTML 範本中,您可能需要格式化浮點數值以進行顯示。正如您所提到的,在 .go 檔案中使用 strconv.FormatFloat 將 float64 轉換為字串非常簡單。但是,這種方法不適合模板。

相反,您有多種選項可以在HTML 模板中格式化浮動:

  • 選項1: 填充之前模板,在.go 檔案中使用fmt.Sprintf 格式化數字。
  • 選項2: 建立自訂資料類型並實作String() 方法以根據您的情況格式化浮點數
  • 選項3:直接在模板內呼叫fmt.Sprintf,指定自訂格式字串。
  • 選項4:註冊自訂範本中的函數可使用您首選的格式字串來格式化浮動。

這是示範這些選項的範例程式碼片段:

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

當您執行此程式碼時(例如,在Go Playground 上),您將看到以下輸出:

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

以上是如何在 Go HTML 範本中設定浮點數格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn