使用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中文網其他相關文章!