Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menghantar peta "dicipta dalam perjalanan" dalam templat Go

Cara menghantar peta "dicipta dalam perjalanan" dalam templat Go

WBOY
WBOYke hadapan
2024-02-05 23:39:03618semak imbas

Cara menghantar peta dicipta dalam perjalanan dalam templat Go

Kandungan soalan

Saya ingin membuat sesuatu seperti komponen UI 100% boleh diguna semula dalam templat Go, tetapi saya tidak tahu sama ada ia boleh dilakukan. Jadi saya cuba lakukan langkah seterusnya:

<code>{{define "components/menu-button"}}
<a href="{{.link}}" class="text-white">{{.content}}</a>
{{end}}
</code>

Ini adalah komponen saya, ia memerlukan map kerana sifatnya adalah huruf kecil.

Kemudian dalam halaman utama saya, saya mempunyai menu kecil yang menggunakan components/menu-button komponen 3 kali dalam bar navigasi saya:

<code><div class="hidden gap-4 sm:flex">
    {{template "components/menu-button" {"link": "/contact", "content": "Contact"}}}
    {{template "components/menu-button" {"link": "/docs", "content": "Docs"}}}
    {{template "components/menu-button" {"link": "/download", "content": "Download"}}}
</div>
</code>

Tetapi saya tidak tahu sama ada saya boleh mencipta satu map seperti yang saya lakukan dalam contoh, ia akan menjadi seperti JSON, tetapi saya mencuba.

Dengan cara ini, ia memberi saya ralat seterusnya:

unexpected "{" in template clause

Jawapan betul


Templat Go tidak menyokong sintaks ini.

Apa yang anda boleh lakukan ialah mengisytiharkan fungsi tersuai seperti

func MakeMap(kvs ...any) map[any]any {
    m := make(map[any]any)
    for i := 0; i < len(kvs)-1; i+=2 {
        m[kvs[i]] = kvs[i+1]
    }
    return m
}

Kemudian anda boleh menggunakan 使该函数可用于模板(*模板).Funcs, sebagai contoh

t.Funcs(template.FuncMap{"M":MakeMap})

Kemudian, dalam templat, anda boleh memanggil fungsi menggunakan kekunci M.

{{template "components/menu-button" (M "link" "/contact" "content" "Contact")}}

https://www.php.cn/link/0740bb92e583cd2b88ec7c59f985cb41

Atas ialah kandungan terperinci Cara menghantar peta "dicipta dalam perjalanan" dalam templat Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam