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
1061 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!

sumber:php.cn
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