Go 템플릿

발행: (2026년 2월 11일 오후 09:23 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

Go 템플릿이란?

Go 템플릿은 데이터와 일반 텍스트 또는 HTML 파일을 섞어 동적 콘텐츠를 생성하는 방법입니다. 템플릿 안의 플레이스홀더를 Go 코드에서 제공한 값으로 교체할 수 있어, 사용자 입력이나 데이터베이스 내용에 따라 페이지를 쉽게 생성할 수 있습니다.

템플릿은 {{ }}와 같은 이중 중괄호로 작성된 플레이스홀더를 포함하는 파일일 뿐입니다. 예를 들어 {{ .Name }}은 템플릿에 전달된 데이터 객체의 Name 필드를 삽입합니다. 점(.)은 루트 데이터 객체를 가리킵니다.

데이터 구조 정의

보통 표시하고자 하는 데이터를 담는 구조체(또는 맵)를 정의합니다:

type PageData struct {
    Title   string
    Message string
}

템플릿 파일 예시

아래는 변수 삽입, 조건문, 반복문 등 Go 템플릿의 여러 기능을 활용한 간단한 HTML 템플릿 예시입니다:

{{ .Title }}

## {{ .Title }}

{{ .Message }}

{{ if .IsLogged }}
    Welcome back, {{ .User }}!
{{ else }}
    Please login to continue.
{{ end }}

## Your Tasks:

{{ range .Tasks }}
    - {{ . }}
{{ else }}
    - No tasks available.
{{ end }}

Go 코드에서 템플릿 사용하기

다음 Go 프로그램은 위 템플릿 파일을 파싱하고 PageData 인스턴스로 실행합니다:

package main

import (
    "html/template"
    "net/http"
)

type PageData struct {
    Title    string
    Message  string
    IsLogged bool
    User     string
    Tasks    []string
}

func handler(w http.ResponseWriter, r *http.Request) {
    data := PageData{
        Title:    "Go Templates Advanced Example",
        Message:  "Using conditions and loops in templates",
        IsLogged: true,
        User:     "Ian",
        Tasks: []string{
            "Learn Go templates",
            "Build a web app",
            "Practice Go daily",
        },
    }

    tmpl := template.Must(template.ParseFiles("index.html"))
    tmpl.Execute(w, data)
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

요약

Go 템플릿을 사용하면 프레젠테이션(HTML 또는 텍스트)과 비즈니스 로직을 분리하고, 서로 다른 데이터를 사용해 레이아웃을 재사용하며, 동적 웹 페이지, 보고서 또는 기타 텍스트 기반 콘텐츠를 효율적으로 만들 수 있습니다. 조건문, 반복문, 내장 함수(len 등)와 같은 기본 로직을 지원해 코드를 깔끔하고 유지보수하기 쉽게 만들어 줍니다.

0 조회
Back to Blog

관련 글

더 보기 »

Go의 비밀스러운 삶: ‘defer’ 문

챕터 20: The Stacked Deck Ethan의 데스크탑 PC 팬이 크게 돌고 있었다. 그는 오류 메시지를 끊임없이 뿜어내는 터미널을 마치 부서진 불꽃처럼 바라보고 있었다.