Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memformat Ralat dengan betul dengan Argumen Pembolehubah dalam Go?

Bagaimana untuk Memformat Ralat dengan betul dengan Argumen Pembolehubah dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-06 03:39:02784semak imbas

How to Correctly Format Errors with Variable Arguments in Go?

Ralat Pemformatan: Alternatif kepada ralat. Baharu dengan Argumen Boleh Ubah

Dalam usaha untuk meningkatkan pengendalian ralat, pengguna boleh berusaha untuk mencipta versi ralat yang disesuaikan. Baharu fungsi yang menerima berbilang argumen, meniru tingkah laku fmt.Sprintf. Walaupun percubaan telah dibuat, cabaran timbul dalam mentafsir hujah pembolehubah dengan betul dalam fungsi tersuai. Artikel ini meneroka penyelesaian dan memberikan panduan tentang melaksanakan mekanisme pemformatan ralat yang teguh.

Salah satu percubaan sedemikian melibatkan penentuan fungsi seperti berikut:

<code class="go">func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}</code>

Walau bagaimanapun, pendekatan ini gagal apabila cuba untuk hantar argumen pembolehubah kepada fmt.Sprintf, menyebabkan argumen dianggap sebagai tatasusunan tunggal. Untuk menyelesaikan isu ini, adalah penting untuk menggunakan operator ... selepas argumen pembolehubah (a) dalam fungsi tersuai, seperti yang ditunjukkan dalam kod yang diperbetulkan di bawah:

<code class="go">func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a...))
}</code>

Dengan menggunakan ... operator, fmt.Sprintf boleh mentafsir argumen pembolehubah dengan betul dan memformat rentetan dengan sewajarnya. Ini membolehkan pengguna mencipta fungsi pemformatan ralat tersuai yang memanfaatkan keupayaan pemformatan berkuasa fmt.Sprintf.

Atas ialah kandungan terperinci Bagaimana untuk Memformat Ralat dengan betul dengan Argumen Pembolehubah dalam 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