Go text/template & html/template Syntax

๐Ÿ’ก Go text/template & html/template Syntax โ€” Executive Summary

Technical architectural analysis, practical configuration manifests, and deployment instructions for Go text/template & html/template Syntax.

Grammar

Conditional statement
go
{{- if $Booleans }}
{{- else if and $Booleans ( not $Booleans ) }}
{{- else }}
{{- end }}

//$Booleans1 ๋˜๋Š” $Booleans2
{{- if or $Booleans1 $Booleans2 }}
{{- end }}
Repeat statement
go
{{ range .Array }}
{{ end }} // ํ•ด๋‹น ๊ฐ’์ด ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ foreach
Basic functions
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(๊ณต๋ฐฑ) ์ œ๊ฑฐ

// ์ฃผ์„์ฒ˜๋ฆฌ
{{/* ์ฃผ์„ */}}
String function
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]]
Official document

Comments

Leave a Reply

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