首頁 >後端開發 >Golang >當介面變數實作'error”介面時,為什麼'fmt.Println”輸出'bad error”而不是'5”?

當介面變數實作'error”介面時,為什麼'fmt.Println”輸出'bad error”而不是'5”?

Barbara Streisand
Barbara Streisand原創
2024-12-16 11:42:11381瀏覽

Why Does `fmt.Println` Output

Golang 介面:理解意外的「壞錯誤」輸出

在Go 中,介面提供了一種機制,用於在不同的環境中定義和實作通用方法類型。然而,當介面類型定義 Error() 方法並指派給介面變數時,就會出現有趣的情況。

考慮以下程式碼片段:

令人驚訝的是,上面的程式碼是“錯誤錯誤”,而不是預期的值 5。發生這種情況是因為 fmt.Println() 隱式呼叫 Error() 方法,如果運算元實作錯誤介面。

如 fmt 套件文件中所述:

錯誤介面定義了一個方法 Error(),它傳回一個描述錯誤的字串。當列印 v 時,它會根據 %v 格式說明符進行處理,如果存在,它會自動呼叫 Error() 方法。

要得到預期的輸出,可以使用Printf() 函數和適當的格式說明符,例如整數的%d:

總之,在將定義了Error() 方法的類型指派給介面變數時,必須注意使用具有隱式參數格式的Printf() 函數系列時,可能會發生意外的「錯誤錯誤」輸出。

以上是當介面變數實作'error”介面時,為什麼'fmt.Println”輸出'bad error”而不是'5”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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