Melalui Parameter Pembolehubah ke Sprintf dalam Go
Untuk mengelakkan tugas yang membosankan untuk menentukan setiap pembolehubah secara individu dalam fungsi Sprintf, seseorang boleh memanfaatkan teknik yang membolehkan untuk menghantar berbilang parameter sebagai satu entiti. Pendekatan ini menangani senario di mana sejumlah besar parameter diperlukan, seperti yang digambarkan dalam soalan.
Kunci kepada teknik ini terletak pada mengisytiharkan hirisan v sebagai []antara muka{} dan bukannya []rentetan. Fungsi Sprintf menjangkakan hujahnya daripada jenis []antara muka{}, seperti yang ditunjukkan dalam tandatangannya:
<code class="go">func Printf(format string, a ...interface{}) (n int, err error)</code>
Dengan menukar v kepada []antara muka{}, ia sejajar dengan jangkaan fungsi:
<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>
Pendekatan ini menjana output yang diingini tanpa "tidak boleh menggunakan v (taip []rentetan) sebagai jenis []antara muka {} dalam argumen kepada ralat fmt.Printf".
Sementara [] antara muka{} dan []rentetan tidak boleh ditukar, adalah mungkin untuk menukar []rentetan kepada []antara muka{} secara manual jika perlu:
<code class="go">ss := []string{"a", "b", "c"} is := make([]interface{}, len(ss)) for i, v := range ss { is[i] = v }</code>
Dengan mengikuti teknik ini, pembangun boleh lulus parameter pembolehubah dengan mudah kepada Sprintf, menjadikan kod mereka lebih cekap dan mengurangkan boilerplate yang dikaitkan dengan menentukan pembolehubah individu.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melewati Berbilang Parameter Pembolehubah kepada Sprintf dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!