Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menggabungkan Rentetan dengan Cekap dalam Templat Go?

Bagaimana untuk Menggabungkan Rentetan dengan Cekap dalam Templat Go?

Linda Hamilton
Linda Hamiltonasal
2024-11-06 15:25:02614semak imbas

How to Concatenate Strings Efficiently in Go Templates?

Menggabungkan Rentetan dalam Templat dengan Cekap

Soalan:

Templat In Go, adakah terdapat cara yang cekap untuk menggabungkan rentetan menggunakan pengendali seperti " "?

Contoh Disediakan:

<code class="go">{{ $var := printf "%s%s" "x" "y" }}
{{ TestFunc $var }}  // Returns "xy"

{{ $var := "y" }}
{{ TestFunc "x" + $var }}  // Error: unexpected "+" in operand

{{ $var := "y" }}
{{ TestFunc "x" + {$var} }}  // Error: unexpected "+" in operand</code>

Jawapan:

Templat Go tidak menyokong pengendali untuk penyatuan rentetan. Oleh itu, contoh di atas akan mengakibatkan ralat.

Penyelesaian:

  1. Gunakan Fungsi printf:
    Seperti yang ditunjukkan dalam contoh pertama, anda boleh menggunakan fungsi printf untuk menggabungkan rentetan. Kaedah ini cekap dan fleksibel.

    <code class="go">{{ $var := printf "%s%s" "x" "y" }}
    {{ TestFunc $var }}  // Returns "xy"</code>
  2. Gabungkan Ungkapan Templat:
    Anda juga boleh menggabungkan berbilang ungkapan templat untuk mencapai penggabungan.

    <code class="go">{{ TestFunc (printf "%s%s" "x" "y") }}  // Returns "xy"</code>
  3. Ubah suai Pengendalian Argumen TestFunc:
    Jika kes penggunaan anda sentiasa melibatkan rentetan penggabungan untuk argumen TestFunc, anda boleh mengubah suai fungsi untuk mengendalikan penggabungan secara dalaman.

    <code class="go">func TestFunc(strs ...string) string {
        return strings.Trim(strings.Join(strs, ""), " ")
    }
    
    {{ TestFunc "x"  $var }}  // Returns "xy"</code>

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Rentetan dengan Cekap dalam Templat Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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 sebelumnya:Pesaing ScrapperArtikel seterusnya:Pesaing Scrapper