Bagaimana untuk Mengekalkan Integriti Hujah dalam Ralat Terformat?

Susan Sarandon
Lepaskan: 2024-11-05 05:04:01
asal
550 orang telah melayarinya

How to Preserve Argument Integrity in Formatted Errors?

Memelihara Integriti Berbilang Argumen dalam Ralat Terformat

Untuk melaksanakan versi tersuai ralat. Baharu yang membenarkan pemformatan hujah berubah-ubah, kita menghadapi cabaran teknikal. Seperti yang ditunjukkan oleh kod yang disediakan:

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

Parameter ...secara tidak sengaja digabungkan ke dalam tatasusunan tunggal semasa penyebutan kaedah, yang membawa kepada pemformatan yang salah. Penyelesaiannya terletak pada meniru kefungsian fmt.Errorf, seperti yang dilihat dalam kod sumbernya:

<code class="go">func Errorf(format string, a ...interface{}) error {
    return errors.New(Sprintf(format, a...))
}</code>
Salin selepas log masuk

Perhatikan bahawa ... operator mengikuti selepas senarai parameter. Dalam Go, sintaks ini membolehkan penghantaran argumen sebagai nilai berasingan dan bukannya satu tatasusunan gabungan. Spesifikasi menggariskan tingkah laku ini:

Jika argumen akhir boleh diserahkan kepada jenis kepingan []T, ia mungkin dihantar tidak berubah sebagai nilai untuk parameter ...T jika argumen diikuti oleh ... .

Dengan memasukkan ... operator seperti yang dilihat dalam fmt.Errorf, kami memastikan bahawa berbilang argumen mengekalkan keperibadiannya semasa pemformatan, menghasilkan yang diingini tingkah laku:

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

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Integriti Hujah dalam Ralat Terformat?. 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