」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在自訂“errors.New”實作中將變數參數傳遞給“fmt.Sprintf”?

如何在自訂“errors.New”實作中將變數參數傳遞給“fmt.Sprintf”?

發佈於2024-11-09
瀏覽:900

How to Pass Variable Arguments to `fmt.Sprintf` in a Custom `errors.New` Implementation?

如何實作錯誤版本。接受與 fmt.Sprintf 相同參數的新版本

實作錯誤版本。接受與 fmt 相同參數的新版本fmt.Sprintf,可以使用NewError函數,其定義如下:

func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}

但是,這個函數無法正常運作,因為 a 中的參數個數可變,在 NewError 中變成單一陣列參數,導致 Sprintf 只填入格式字串中的單一參數。

要解決此問題,NewError 中的最終參數應使用... 語法標記為可變數量的參數:

func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a...))
}

這允許 fmt.Sprintf 將 a 解釋為可變數量的參數。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3