>백엔드 개발 >Golang >Go\의 템플릿 시스템에 포함된 템플릿에 데이터를 인수로 전달하려면 어떻게 해야 하나요?

Go\의 템플릿 시스템에 포함된 템플릿에 데이터를 인수로 전달하려면 어떻게 해야 하나요?

DDD
DDD원래의
2024-10-28 04:29:30677검색

How can I pass data as arguments to an included template in Go's templating system?

템플릿 간 데이터 전달

Go의 템플릿 시스템에서는 특히 템플릿 내에 하나의 템플릿을 포함할 때 여러 템플릿 간에 데이터를 전달해야 할 수 있습니다. 또 다른. "데이터를 포함된 템플릿에 인수로 전달하고 해당 템플릿 내에서 액세스하려면 어떻게 해야 합니까?"라는 질문이 생깁니다.

이를 달성하려면 인수를 단일 슬라이스 값으로 병합하는 사용자 정의 함수를 활용할 수 있습니다. 이 함수를 등록하면 템플릿 호출 내에서 사용할 수 있습니다. 다음 코드는 이 작업이 수행되는 방법을 보여줍니다.

<code class="go">package main

import (
    "fmt"
    "html/template"
)

func main() {
    t, err := template.New("t").Funcs(template.FuncMap{
        "args": func(vs ...interface{}) []interface{} { return vs },
    }).Parse("{{ template \"image_row\" args . 5 }}")
    if err != nil {
        fmt.Println(err)
        return
    }

    err = t.Execute(template.Must(template.ParseFiles("index.html", "image_row.html")), nil)
    if err != nil {
        fmt.Println(err)
        return
    }
}

// index.html
{{ template "image_row" . | 5 }}

// image_row.html
{{ define "image_row" }}
   To stuff here {{index . 0}} {{index . 1}}
{{ end }}</code>

image_row 템플릿 내에서 내장된 인덱스 함수를 사용하여 인수에 액세스할 수 있습니다. 예를 들어, {{index . 0}}는 index.html 템플릿에서 전달된 첫 번째 인수(색인 0)(이 경우 숫자 5)에 액세스합니다.

이 솔루션은 여러 템플릿 간에 데이터를 전달하고 액세스하는 다양한 방법을 제공하여 사용자 정의를 활성화합니다. 기능성과 효율적인 코드 재사용이 가능합니다.

위 내용은 Go\의 템플릿 시스템에 포함된 템플릿에 데이터를 인수로 전달하려면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.