Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Anda Boleh Mengira Nilai dalam Templat HTML dengan Go?
Mengira Nilai dalam Templat HTML dengan Go
Apabila bekerja dengan templat HTML dalam Go, anda mungkin menghadapi situasi di mana anda perlu melakukan pengiraan dalam templat itu sendiri. Walau bagaimanapun, sintaks yang anda berikan, "{{ $length -1 }}", tidak akan berfungsi kerana templat tidak bertujuan untuk digunakan untuk logik yang kompleks.
Untuk mengira nilai dalam templat, anda mempunyai dua perkara utama pilihan:
Pendekatan pilihan dan lebih mudah ialah mengira nilai di luar templat dan menghantarnya sebagai parameter . Sebagai contoh, jika anda mempunyai peta dan ingin mengira indeks terakhir, anda boleh melakukannya dalam pengawal dan menghantar hasilnya kepada templat seperti ini:
func IndexHandler(w http.ResponseWriter, r *http.Request) { m := make(map[string]string) // ... populate map ... lastIdx := len(m) - 1 data := struct { LastIdx int }{ LastIdx: lastIdx, } t, err := template.ParseFiles("template.html") if err != nil { // Handle error } t.Execute(w, data) }
Dalam templat, anda hanya boleh menggunakan {{.LastIdx}} untuk memaparkan indeks terakhir yang dikira.
Jika anda memerlukan pengiraan yang lebih kompleks atau ingin melaksanakannya dalam templat, anda boleh mendaftarkan fungsi tersuai dan kemudian memanggilnya dari templat. Untuk berbuat demikian, gunakan templat.Taip FuncMap dan daftarkan fungsi seperti ini:
func init() { template.Funcs["subtractOne"] = func(x int) int { return x - 1 } }
Dalam templat, anda kemudian boleh memanggil fungsi seperti ini:
{{ $lastIdx := subtractOne (len .) }} <p>The last index of this map is: {{ $lastIdx }} </p>
Ini akan tolak satu daripada panjang peta dan simpan hasilnya dalam pembolehubah $lastIdx.
Ingat bahawa templat bukanlah bahasa pengaturcaraan sepenuhnya dan tujuan utamanya adalah untuk membentangkan data. Logik kompleks harus dikendalikan di luar templat atau melalui fungsi tersuai.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mengira Nilai dalam Templat HTML dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!