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
Susan Sarandonasal
2024-11-14 09:32:021022semak imbas

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)
}

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!

Kenyataan:
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