Rumah > pembangunan bahagian belakang > Golang > Cara menghantar peta 'dicipta dalam perjalanan' dalam templat Go

Cara menghantar peta 'dicipta dalam perjalanan' dalam templat Go

WBOY
Lepaskan: 2024-02-05 23:39:03
ke hadapan
631 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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
Salin selepas log masuk


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
}
Salin selepas log masuk

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

t.Funcs(template.FuncMap{"M":MakeMap})
Salin selepas log masuk

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

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

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan