Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Meluluskan Berbilang Pembolehubah ke Fungsi Sprintf Menggunakan Slice?

Bagaimana untuk Meluluskan Berbilang Pembolehubah ke Fungsi Sprintf Menggunakan Slice?

DDD
DDDasal
2024-10-29 10:01:291043semak imbas

How to Pass Multiple Variables to Go's Sprintf Function Using a Slice?

Parameter Pembolehubah dalam Sprintf Go untuk Input Ringkas

Isu:

Bagi mereka yang memilih kemudahan, menghantar berbilang pembolehubah kepada fungsi Sprintf boleh membosankan. Semasa cuba berbuat demikian dengan sekeping rentetan, ralat seperti "tidak boleh menggunakan v (taip []rentetan) sebagai jenis []antara muka {} dalam hujah ke fmt.Printf" mungkin timbul.

Penyelesaian:

Untuk menyelesaikan isu ini, isytiharkan kepingan anda sebagai []antara muka{}, menjajarkannya dengan jenis hujah yang dijangkakan oleh Sprintf. Tandatangan Sprintf menyatakan:

<code class="go">func Printf(format string, a ...interface{}) (n int, err error)</code>

Pelaksanaan:

<code class="go">s := []interface{}{"a", "b", "c", "d"}
fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3])

v := s[1:]
fmt.Printf("%5s %4s %3s\n", v...)</code>

Penjelasan:

  • []antara muka {} dan []rentetan tidak boleh saling tukar.
  • Jika anda mempunyai []rentetan atau menggunakan fungsi yang mengembalikannya, tukarkannya secara manual kepada []antara muka{} dengan mengulangi elemen dan menetapkan setiap rentetan kepada elemen antara muka{}.

Output:

b    c   d
b    c   d

Nota Tambahan:

Jika anda memerlukan lebih daripada 10 parameter, cuma laraskan bilangan elemen dalam kepingan mengikut keperluan. Penyelesaiannya tetap sama.

Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Berbilang Pembolehubah ke Fungsi Sprintf Menggunakan Slice?. 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