"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso passar dados como argumentos para um modelo incluído no sistema de modelos de Go \?

Como posso passar dados como argumentos para um modelo incluído no sistema de modelos de Go \?

Postado em 2025-03-24
Navegar:545

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

Passando dados entre os modelos

no sistema de modelos de Go, pode ser necessário passar dados entre vários modelos, principalmente quando incluir um modelo dentro de outro. Surge a pergunta: "Como posso passar dados como argumentos para um modelo incluído e acessá -los nesse modelo?"

para conseguir isso, você pode utilizar uma função personalizada que mescla os argumentos em um único valor de fatia. Ao registrar esta função, ela pode ser usada na invocação do modelo. O código a seguir demonstra como isso é feito:

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 }}

dentro do modelo Image_Row, os argumentos podem ser acessados ​​usando a função de índice interno. Por exemplo, {{index. 0}} acessaria o primeiro argumento (índice 0) passado do modelo Index.html, neste caso o número 5.

Esta solução fornece uma maneira versátil de passar e acessar dados entre vários modelos, ativando a funcionalidade personalizada e o reuse eficiente do código.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3