Bagaimana untuk Mengesan Item Terakhir dalam Julat Templat dalam Go?

Patricia Arquette
Lepaskan: 2024-11-09 03:46:02
asal
502 orang telah melayarinya

How to Detect the Last Item in a Template Range in Go?

Mengesan Item Terakhir dalam Julat Templat

Apabila bekerja dengan templat, anda mungkin menghadapi situasi di mana anda perlu menentukan elemen terakhir dalam julat. Ini amat berguna apabila anda ingin menyesuaikan output berdasarkan kedudukan item semasa.

Pertimbangkan templat berikut:

{{range $i, $e := .SomeField}}
    {{if $i}}, {{end}}
    $e.TheString
{{end}}
Salin selepas log masuk

Templat ini menghasilkan output seperti:

one, two, three
Salin selepas log masuk

Walau bagaimanapun, jika anda ingin mengubah suai output menjadi:

one, two, and three
Salin selepas log masuk
Salin selepas log masuk

Anda memerlukan cara untuk mengesan bahawa item semasa ialah elemen terakhir dalam julat.

Pelaksanaan

Pendekatan tradisional menggunakan pembolehubah untuk menyimpan panjang tatasusunan dan indeks semasa tidak berfungsi dengan berkesan dalam templat. Nasib baik, terdapat penyelesaian menggunakan fungsi templat tersuai:

package main

import (
    "os"
    "reflect"
    "text/template"
)

var fns = template.FuncMap{
    "last": func(x int, a interface{}) bool {
        return x == reflect.ValueOf(a).Len() - 1
    },
}
Salin selepas log masuk

Fungsi ini menyemak sama ada indeks x yang disediakan adalah sama dengan panjang tatasusunan a tolak 1, menunjukkan bahawa ia adalah elemen terakhir.

Penggunaan

Untuk menggunakan fungsi ini dalam templat anda, anda boleh menggunakan ia sebagai berikut:

{{range  $i, $e := .}}{{if $i}}, {{end}}{{if last $i $}}and {{end}}{{$e}}{{end}}.`
Salin selepas log masuk

Templat ini akan menghasilkan output yang diingini:

one, two, and three
Salin selepas log masuk
Salin selepas log masuk

Pengoptimuman Tambahan

Anda boleh menggunakan fungsi len secara alternatif tanpa refleksi untuk mencapai hasil yang sama, meningkatkan lagi kecekapan penyelesaian ini.

Atas ialah kandungan terperinci Bagaimana untuk Mengesan Item Terakhir dalam Julat Templat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan