Rumah > pembangunan bahagian belakang > Golang > Bolehkah %v Mencetak Kedua-dua Integer dan Rentetan dalam `fmt.Printf` Go?

Bolehkah %v Mencetak Kedua-dua Integer dan Rentetan dalam `fmt.Printf` Go?

Susan Sarandon
Lepaskan: 2024-11-14 09:32:02
asal
1088 orang telah melayarinya

Can %v Print Both Integers and Strings in Go's `fmt.Printf`?

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)
}
Salin selepas log masuk

Output:

2 *2*
Salin selepas log masuk

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!

Kenyataan Laman Web ini
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 terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan