[go] 템플릿 상속

Go 언어에서는 템플릿 상속을 쉽게 할 수 있는 기능을 제공합니다. 이를 통해 코드 중복을 줄이고 유지보수를 용이하게 할 수 있습니다. 본 포스트에서는 Go에서 템플릿 상속을 구현하는 방법에 대해 알아보겠습니다.

기본 템플릿

먼저, 다음과 같이 기본 템플릿을 작성합니다.


{{define "base"}}
<html>
<head>
    <title>{{template "title" .}}</title>
</head>
<body>
    {{template "content" .}}
</body>
</html>
{{end}}

위의 코드에서 define 키워드를 사용하여 “base”라는 이름의 기본 템플릿을 정의했습니다. 그리고 {{template "title" .}}{{template "content" .}}를 통해 타이틀과 컨텐츠를 삽입할 수 있도록 했습니다.

상속 템플릿

다음으로, 상속받을 템플릿을 작성합니다.


{{define "sub" "base"}}
{{template "title" .}} - My Site
{{define "content"}}
<h1>Welcome to my site!</h1>
<p>This is the content of the page.</p>
{{end}}

위의 코드에서 {{define "sub" "base"}}를 통해 “base” 템플릿을 상속받았으며, {{template "title" .}} - My Site를 통해 타이틀을 확장했고, {{define "content"}} 내부에 원하는 콘텐츠를 추가했습니다.

템플릿 사용

마지막으로, 아래와 같이 템플릿을 사용할 수 있습니다.

func main() {
    tmpl := template.Must(template.New("base").ParseFiles("base.tmpl", "sub.tmpl"))
    err := tmpl.ExecuteTemplate(os.Stdout, "sub", nil)
    if err != nil {
        log.Fatalf("Error executing template: %v", err)
    }
}

위의 코드에서 template.New("base").ParseFiles("base.tmpl", "sub.tmpl")를 통해 기본 템플릿과 상속 템플릿을 로드하고, tmpl.ExecuteTemplate(os.Stdout, "sub", nil)를 통해 상속 템플릿을 실행합니다.

이렇게 하면 Go에서 템플릿 상속을 구현할 수 있습니다.

References


더 많은 기술 블로그 포스트를 읽어보고 싶으신가요?

Techie 블로그에서 다양한 기술 블로그 포스트를 만나보세요! 여기서 확인하실 수 있습니다.