Bagaimana untuk Mengesan Elemen Terakhir dalam Julat Templat Golang?

Patricia Arquette
Lepaskan: 2024-11-07 13:22:02
asal
966 orang telah melayarinya

How to Detect the Last Element in a Golang Template Range?

Mengesan Elemen Terakhir dalam Julat Templat

Dalam templat teks Golang, arahan julat berulang ke atas elemen dalam koleksi dan menyediakan akses kepada elemen semasa dan indeksnya. Walaupun mekanisme ini memudahkan gelung yang cekap, ia memberikan cabaran apabila mengenal pasti elemen terakhir dalam jujukan.

Isu:

Pertimbangkan templat:

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

Secara lalai, templat ini akan mengeluarkan senarai elemen yang dipisahkan koma:

one, two, three
Salin selepas log masuk

Walau bagaimanapun, untuk menjana output boleh dibaca manusia dengan "dan" sebelum elemen terakhir, kita perlu menentukan indeks terakhir julat.

Penyelesaian:

Walaupun operasi aritmetik tidak disokong secara langsung dalam templat, penyelesaian melibatkan penggunaan pakej pantulan Go:

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


func main() {
    t := template.Must(template.New("abc").Funcs(fns).Parse(`{{range  $i, $e := .}}{{if $i}}, {{end}}{{if last $i $}}and {{end}}{{$e}}{{end}}.`))
    a := []string{"one", "two", "three"}
    t.Execute(os.Stdout, a)
}
Salin selepas log masuk

Penyelesaian ini memperkenalkan fungsi Go terakhir pada peta fungsi templat. Fungsi ini mengambil indeks semasa dan koleksi sebagai argumen dan mengembalikan benar jika indeks sama dengan panjang koleksi tolak satu.

Dengan memasukkan fungsi ini ke dalam templat, kita boleh membezakan elemen terakhir dan mengeluarkan yang diingini hasil:

one, two, and three
Salin selepas log masuk

Nota Tambahan:

Pendekatan alternatif menggunakan fungsi len untuk mengira panjang koleksi dalam templat tanpa memerlukan refleksi:

{{range  $i, $e := .}}{{if $i}}, {{end}}{{if eq $i (len $)}}and {{end}}{{$e}}{{end}}.`
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengesan Elemen Terakhir dalam Julat Templat Golang?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!