[go] 템플릿 변수와 함수

고(Go) 프로그래밍 언어에서는 html/template 패키지를 사용하여 템플릿을 만들고 실행할 수 있습니다. 템플릿 내에서 변수를 사용하거나 함수를 호출하여 동적인 콘텐츠를 생성할 수 있습니다.

템플릿 변수 사용하기

템플릿 내에서 데이터를 출력하거나 조작하기 위해서는 템플릿 실행 시에 필요한 데이터를 제공해야 합니다. 이를 위해 Execute 또는 ExecuteTemplate 함수를 호출할 때, 두 번째 매개변수로 전달되는 데이터를 정의하는 데에 사용됩니다. 이 데이터는 map[string]interface{} 형식을 따릅니다.

또한, 템플릿 내에서는 {{ .변수명 }} 형식으로 변수를 참조할 수 있습니다. 여기서 .은 현재 범위 내의 데이터를 나타냅니다.


package main

import (
	"html/template"
	"os"
)

func main() {
	tmpl := template.Must(template.New("example").Parse("Hello, {{.Name}}!"))
	data := map[string]interface{}{"Name": "Gopher"}
	tmpl.Execute(os.Stdout, data)
}

위 예제에서는 {{.Name}} 부분이 데이터 맵에서 Name 키에 해당하는 값을 출력합니다.

템플릿 함수 사용하기

템플릿 내에서 함수를 호출하여 데이터를 변환하거나 특정한 작업을 수행할 수 있습니다. 템플릿 실행 전에 함수를 정의하고, 해당 함수를 템플릿에 등록하여 사용할 수 있습니다.


package main

import (
	"html/template"
	"os"
	"strings"
)

func main() {
	funcMap := template.FuncMap{
		"uppercase": strings.ToUpper,
	}
	tmpl := template.Must(template.New("example").Funcs(funcMap).Parse("Hello, {{uppercase .Name}}!"))
	data := map[string]interface{}{"Name": "Gopher"}
	tmpl.Execute(os.Stdout, data)
}

위 예제에서는 uppercase 함수를 정의하고, 이를 템플릿에 등록하여 사용합니다. 실행 결과는 HELLO, GOPHER!가 되겠죠?

마치며

고(Go)의 템플릿 기능을 이용하면 동적인 웹 페이지를 만들거나 텍스트 기반의 보고서를 생성하는 데에 유용하게 활용할 수 있습니다. 템플릿 변수와 함수를 적절히 활용하여 보다 다양하고 유연한 콘텐츠를 생성해보세요.