Golang 介面:理解意外的「壞錯誤」輸出
在Go 中,介面提供了一種機制,用於在不同的環境中定義和實作通用方法類型。然而,當介面類型定義 Error() 方法並指派給介面變數時,就會出現有趣的情況。
考慮以下程式碼片段:
令人驚訝的是,上面的程式碼是“錯誤錯誤”,而不是預期的值 5。發生這種情況是因為 fmt.Println() 隱式呼叫 Error() 方法,如果運算元實作錯誤介面。
如 fmt 套件文件中所述:
錯誤介面定義了一個方法 Error(),它傳回一個描述錯誤的字串。當列印 v 時,它會根據 %v 格式說明符進行處理,如果存在,它會自動呼叫 Error() 方法。
要得到預期的輸出,可以使用Printf() 函數和適當的格式說明符,例如整數的%d:
總之,在將定義了Error() 方法的類型指派給介面變數時,必須注意使用具有隱式參數格式的Printf() 函數系列時,可能會發生意外的「錯誤錯誤」輸出。
以上是當介面變數實作'error”介面時,為什麼'fmt.Println”輸出'bad error”而不是'5”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!