Go에서 템플릿 출력 캡처
Go 템플릿 내에서 하위 템플릿의 출력을 캡처하거나 변수에 직접 할당하는 것은 기본적으로 지원되지 않습니다. 그러나 이는 사용자 정의 함수를 등록하고 바이트 버퍼를 사용하여 템플릿 결과를 수신함으로써 달성할 수 있습니다.
사용자 정의 함수 등록
템플릿 출력을 캡처하려면 등록 템플릿 이름을 인수로 취하고 템플릿의 출력을 문자열로 반환하는 Template.Funcs()가 있는 함수:
func execTempl(name string) (string, error) { buf := &bytes.Buffer{} err := t.ExecuteTemplate(buf, name, nil) return buf.String(), err }
템플릿 실행 및 결과 캡처
Template.ExecuteTemplate()을 사용하여 'my-template'이라는 하위 템플릿을 실행하고 변수에 할당합니다.
{{$var := execTempl "my-template"}}
출력 검색
캡처된 출력을 검색하고 필요에 따라 사용합니다.
See result: {{$var}}
전체 예
var t *template.Template func main() { t = template.Must(template.New("").Funcs(template.FuncMap{ "execTempl": execTempl, }).Parse(tmpl)) if err := t.Execute(os.Stdout, nil); err != nil { panic(err) } } const tmpl = ` {{define "my-template"}}my-template content{{end}} See result: {{$var := execTempl "my-template"}} {{$var}} `
출력:
See result: my-template content
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3