Rumah >pembangunan bahagian belakang >Golang >Bolehkah %v Mencetak Kedua-dua Integer dan Rentetan dalam `fmt.Printf` Go?
Menggunakan %v untuk Mencetak Jenis Data Berbeza
Adalah perkara biasa untuk menghadapi situasi di mana kita perlu mencetak kedua-dua integer (%d) dan rentetan (%s) menggunakan printf. Seseorang mungkin tertanya-tanya sama ada boleh menggunakan %v untuk kedua-dua jenis. Walaupun ia boleh diterima, menggunakan %v secara sembarangan boleh membawa kepada hasil yang tidak dijangka.
Pemformatan Lalai %v
fmt.Printf("%v") ialah generik pemegang tempat yang mencetak nilai menggunakan format "lalai", yang boleh ditindih dengan menentukan bendera format. Untuk integer, %v lalai kepada pemformatan asas 10 (%d). Walau bagaimanapun, %v kembali kepada fmt. Antara muka stringer untuk jenis bukan primitif.
Pertimbangkan contoh berikut:
type MyInt int func (mi MyInt) String() string { return fmt.Sprint("*", int(mi), "*") } func main() { var mi MyInt = 2 fmt.Printf("%d %v", mi, mi) }
Output:
2 *2*
In kes ini, %v menghormati pelaksanaan kaedah String() dalam MyInt dan cetakan "2", mengatasi pemformatan integer lalai.
Pertimbangan
Menggunakan %v untuk kedua-dua integer dan rentetan secara teknikalnya tidak salah. Walau bagaimanapun, ia boleh mengakibatkan pemformatan yang mungkin tidak diingini dalam semua situasi. Adalah disyorkan untuk menggunakan penentu format eksplisit (%d untuk integer dan %s untuk rentetan) untuk memastikan pemformatan yang konsisten dan boleh diramal.
Atas ialah kandungan terperinci Bolehkah %v Mencetak Kedua-dua Integer dan Rentetan dalam `fmt.Printf` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!