Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengekalkan Integriti Hujah dalam Ralat Terformat?

Bagaimana untuk Mengekalkan Integriti Hujah dalam Ralat Terformat?

Susan Sarandon
Susan Sarandonasal
2024-11-05 05:04:01605semak imbas

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>

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>

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>

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!

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