Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menghantar data sebagai hujah kepada templat yang disertakan dalam sistem templat Go?

Bagaimanakah saya boleh menghantar data sebagai hujah kepada templat yang disertakan dalam sistem templat Go?

DDD
DDDasal
2024-10-28 04:29:30609semak imbas

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

Melalui Data Antara Templat

Dalam sistem templat Go, mungkin perlu untuk menghantar data antara berbilang templat, terutamanya apabila menyertakan satu templat dalam yang lain. Timbul persoalan, "Bagaimanakah saya boleh menghantar data sebagai argumen kepada templat yang disertakan dan mengaksesnya dalam templat itu?"

Untuk mencapai ini, anda boleh menggunakan fungsi tersuai yang menggabungkan argumen ke dalam satu nilai hirisan. Dengan mendaftarkan fungsi ini, ia boleh digunakan dalam permohonan templat. Kod berikut menunjukkan cara ini dilakukan:

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

Dalam templat image_row, hujah boleh diakses menggunakan fungsi indeks terbina dalam. Contohnya, {{index. 0}} akan mengakses argumen pertama (indeks 0) yang diluluskan daripada templat index.html, dalam kes ini nombor 5.

Penyelesaian ini menyediakan cara yang serba boleh untuk menghantar dan mengakses data antara berbilang templat, membolehkan tersuai kefungsian dan penggunaan semula kod yang cekap.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menghantar data sebagai hujah kepada templat yang disertakan dalam sistem templat Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn