Menggunakan %v untuk Mencetak: Isu Berpotensi untuk Dipertimbangkan
Walaupun kata kerja %v membenarkan untuk mencetak kedua-dua integer (%d) dan rentetan (%s), penggunaannya harus dipertimbangkan dengan berhati-hati untuk mengelakkan pemformatan yang tidak diingini isu.
Format Lalai lwn. Format Khusus
Tidak seperti kata kerja %d, yang mengarahkan pakej fmt untuk mencetak nilai sebagai nombor (dengan asas 10), kata kerja %v menggunakan format lalai. Format lalai ini boleh ditindih dengan melaksanakan antara muka fmt.Stringer (dengan kaedah rentetan String()) untuk jenis tersuai anda.
Contoh
Pertimbangkan kod berikut menggunakan jenis tersuai MyInt yang melaksanakan fmt.Stringer antara muka:
type MyInt int func (mi MyInt) String() string { return fmt.Sprintf("*%d*", int(mi)) } func main() { var mi MyInt = 2 fmt.Printf("%d %v", mi, mi) }
Output:
2 *2*
Apabila menggunakan %v, pakej fmt menyemak sama ada nilai melaksanakan fmt.Stringer dan memanggil String()nya kaedah. Ini menyebabkan nilai dipaparkan dengan format yang diganti ("2" bukannya "2").
Peraturan Pemformatan
Fmt pakej mengikut set peraturan pemformatan tertentu apabila menggunakan %v:
It检查接口实现:
>>
Conclusion secara teknikal mungkin untuk sentiasa menggunakan %v untuk mencetak, biasanya disyorkan untuk menggunakan kata kerja tertentu seperti %d dan %s untuk integer dan rentetan. Menggunakan %v boleh membawa kepada tingkah laku pemformatan yang tidak dijangka jika jenis anda melaksanakan antara muka tertentu, terutamanya fmt.Stringer.Atas ialah kandungan terperinci Bilakah Anda Harus Menggunakan `%v` untuk Mencetak dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!