[go] html/template 패키지의 커스텀 함수

html/template 패키지는 Go 프로그램에서 HTML 템플릿을 렌더링하기 위한 강력한 도구입니다. 이 패키지는 내장 함수를 제공하지만 때로는 우리의 특정한 요구에 맞게 커스텀 함수를 정의해야 할 때가 있습니다.

이 블로그 포스트에서는 html/template 패키지에서 커스텀 함수를 만드는 방법과 그 활용에 대해 알아보겠습니다.

1. 커스텀 함수 만들기

html/template 패키지를 사용하여 템플릿을 렌더링하다 보면 기존에 정의된 함수로는 원하는 기능을 구현할 수 없는 경우가 발생할 수 있습니다. 이럴 때는 자체적으로 커스텀 함수를 만들 수 있습니다.

커스텀 함수를 만들려면 먼저 다음 단계를 따라야 합니다:

import (
    "html/template"
    "strings"
)

func main() {
    // 템플릿 객체 생성
    tmpl := template.New("mytemplate")
    // 커스텀 함수 등록
    tmpl.Funcs(template.FuncMap{
        "upper": strings.ToUpper,
    })
}

2. 커스텀 함수 활용하기

이제 커스텀 함수를 등록했으니, 템플릿에서 이를 활용할 수 있습니다. 아래는 템플릿 파일에서 커스텀 함수를 어떻게 사용하는지 보여주는 예제입니다.


<!DOCTYPE html>
<html>
<head>
    <title>커스텀 함수 예제</title>
</head>
<body>
    <h1>{{.Title | upper}}</h1>
    <p>{{.Content}}</p>
</body>
</html>

위의 예제에서 {{.Title | upper}}Title에 대한 커스텀 upper 함수를 적용하고 있습니다.

3. 주의사항

커스텀 함수를 만들 때 몇 가지 주의해야 할 점이 있습니다. 첫째, 커스텀 함수는 템플릿을 파싱하기 전에 등록되어야 합니다. 둘째, 커스텀 함수는 항상 에러를 반환해야 합니다.

이상으로 ‘html/template’ 패키지의 커스텀 함수에 대해 알아보았습니다. 커스텀 함수를 통해 템플릿 작성을 보다 유연하게 할 수 있으며, 강력한 기능을 구현할 수 있게 됩니다.

더 많은 정보는 공식 Go 언어 웹사이트에서 찾아볼 수 있습니다.