Rumah > pembangunan bahagian belakang > Golang > teks/template golang bermula dengan fungsi

teks/template golang bermula dengan fungsi

WBOY
Lepaskan: 2024-02-06 11:15:03
ke hadapan
642 orang telah melayarinya

golang 文本/模板以函数开头

Kandungan soalan

Saya dalam fungsi go text/template 包中没有看到任何类型的 startswith. Adakah ini pelaksanaan terbaik?

{{if eq (slice $c 0 5) "begin"}}
Salin selepas log masuk


Jawapan betul


Tiada fungsi templat terbina dalam. startswith

Perkara paling bersih ialah jika anda mendaftarkan fungsi tersuai dengan fungsi tersebut:

func main() {
    t := template.must(template.new("").funcs(template.funcmap{
        "hasprefix": strings.hasprefix,
    }).parse(src))

    for _, s := range []string{"foo", "begining"} {
        if err := t.execute(os.stdout, s); err != nil {
            panic(err)
        }
    }
}

const src = `{{.}}: {{if hasprefix . "begin"}}yes{{else}}no{{end}}
`
Salin selepas log masuk

Ini akan menghasilkan (cuba di

pergi taman permainan):

foo: no
begining: yes
Salin selepas log masuk

Jika anda tidak boleh atau tidak mahu mendaftarkan fungsi tersuai,

berfungsi dengan rentetan, tetapi anda perlu berhati-hati dengannya: jika rentetan input lebih pendek daripada 5 bait, anda akan mendapat ralat pelaksanaan templat! slice

Sebaliknya (jika anda tidak mahu mendaftar fungsi tersuai), saya cadangkan menggunakan terbina dalam

tanpa panik: printf 函数,精度是要比较的字符串的长度。如果输入字符串较短,printf

{{if eq (printf "%.5s" .) "begin"}}yes{{else}}no{{end}}
Salin selepas log masuk

Keluaran ini adalah sama. Cuba ini di

pergi taman permainan.

Sila ambil perhatian, gunakan

). hasprefix 更安全、更干净、更简单,因为我们不必硬编码前缀的长度 (5

Perhatikan bahawa menggunakan

pengindeksan parameter eksplisit kita juga boleh menjadikan bahagian ini dinamik:

{{$prefix := "begin"}}{{if eq (printf "%.[1]*s" (len $prefix) .) $prefix}}yes{{else}}no{{end}}
Salin selepas log masuk
Seperti yang anda lihat, kita boleh menyingkirkan panjang kod keras awalan

. Ini sekali lagi mengeluarkan kandungan yang sama, cuba di 5go playground.

Satu perkara terakhir yang perlu diperhatikan: rentetan hirisan mentafsirkan indeks sebagai

indeks bait, manakala ketepatan yang digunakan dalam rentetan format ditafsirkan sebagai kiraan rune!

Atas ialah kandungan terperinci teks/template golang bermula dengan fungsi. 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