實作錯誤版本。接受與 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