Bilakah Anda Harus Menggunakan `%v` untuk Mencetak dalam Go?

DDD
Lepaskan: 2024-11-26 09:09:08
asal
419 orang telah melayarinya

When Should You Use `%v` for Printing in Go?

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

Output:

2 *2*
Salin selepas log masuk

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:

  1. It检查接口实现:

    • refleksi.Nilai:替换为实际值。
    • Formatter:使用自定义格式器进行格式化。
    • GoStringer(布物:GoStringer(布片方法。
  2. String() 方法:如果实现 String() string,将其值转换为字符串。Error>
Kesimpulan🎜>

>>

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan