Go 언어 텍스트 템플릿(template) 문법 가이드 및 함수 활용

💡 핵심 요약 (Executive Summary)

본 가이드는 golang goTemplate 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents

문법

조건문
go
{{- if $Booleans }}
{{- else if and $Booleans ( not $Booleans ) }}
{{- else }}
{{- end }}

//$Booleans1 또는 $Booleans2
{{- if or $Booleans1 $Booleans2 }}
{{- end }}
반복문
go
{{ range .Array }}
{{ end }} // 해당 값이 배열일 경우 foreach
기초함수
go
// go Data는 최상위 맵으로 구성된다. 맵의 키로 값 접근
{{ .DATA }}

// 템플릿 블록 선언
{{ define "slack.main.title" }}
{{ end }}

// define된 템플릿 블록 출력
{{ template "slack.main.title" . }}

// 최상위 범위의 컨텍스트(context)**를 저장. 블록 내에서도 참조 가능
{{ $root := . }}

// Array
{{ index .AAA 3 }} // 배열의 값 접근
{{ len .Array }} // 해당 값이 배열일 경우 길이 리턴, String일 경우 글자수 리턴

// Map
{{ index .AAA "B-B" "C" }} //.AAA["B-B"]["C"]
{{ .AAA.BB.C }} //.AAA.BB.C

// 공백 제거
{{ .Text -}} // 우로 존제하는 Space(공백) 제거
{{- .Text }} // 좌로 존재하는 Space(공백) 제거

// 주석처리
{{/* 주석 */}}
문자열 함수
go
# convert String to Base64 encrypt
$String | b64enc

# 쌍따옴표 삽입 (String 형으로 인식되어야하는 경우)
$value | quote

# 읽어온 Map|Array 밸류를 Yaml Template 형태로 변환
toYaml $yamlValue

# 주로 toYaml과 함께 사용됨. $n회 들여쓰기
$value | nindent $n
Examples
go
// 1. map
// data
{
	"JSON_MAP": {
		"alertname": "High CPU usage",
		"team": "blue",
		"zone": "eu01"
	}
}
// action
{{ .JSON_MAP }}
// result
>> map[alertname:High CPU usage team:blue zone:eu-1]

// 2. array
// data
{
	"JSON_ARR": [{"a":1},{"b":2},{"c":3},{"d":4}]
}
// action
{{ .JSON_ARR }}
// result
>> [map[a:1] map[b:2] map[c:3] map[d:4]]
공식문서

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *