首頁 >後端開發 >Golang >如何使用 fmt.Errorf 建立類似 fmt.Sprintf 的自訂錯誤函數?

如何使用 fmt.Errorf 建立類似 fmt.Sprintf 的自訂錯誤函數?

Patricia Arquette
Patricia Arquette原創
2024-11-05 10:19:021073瀏覽

How can I create a custom error function similar to fmt.Sprintf using fmt.Errorf?

使用fmt.Errorf 格式化錯誤訊息

初始問題:

初始問題:

<code class="go">func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}</code>
您試圖建構自訂版本的errors.New,與fmt.Sprintf的輸入參數並行。但是,當您實作此函數時:

您遇到了一個問題,即「a」成為 NewError() 中的單一陣列參數。這導致 fmt.Sprintf 無法僅將一個參數替換為格式字串。

解:

您遇到的障礙源自於缺少 ...(省略號)位於函數宣告中的「a」參數之後。根據 Go 規範,這種遺漏會阻礙您的程式碼正確處理可變數量的參數。

fmt.Errorf 來救援

<code class="go">func Errorf(format string, a ...interface{}) error {
    return errors.New(Sprintf(format, a...))
}</code>
幸運的是,fmt.Errorf 已經存在具有您想要實現的所需功能:

透過附加省略號,您使fmt.Errorf 能夠巧妙地將'a' 解釋為可變數量的參數,巧妙地滿足格式化的需求錯誤訊息。

以上是如何使用 fmt.Errorf 建立類似 fmt.Sprintf 的自訂錯誤函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn