>  기사  >  백엔드 개발  >  Go HTML 템플릿에서 부동 소수점 숫자 형식을 지정하는 방법은 무엇입니까?

Go HTML 템플릿에서 부동 소수점 숫자 형식을 지정하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-09 00:11:01846검색

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으로 문의하세요.