首頁 >後端開發 >Golang >為什麼當 Integer 實作 Go 中的 Error 介面時,fmt.Println 會列印「bad error」而不是 5?

為什麼當 Integer 實作 Go 中的 Error 介面時,fmt.Println 會列印「bad error」而不是 5?

Barbara Streisand
Barbara Streisand原創
2024-12-04 02:47:09801瀏覽

Why Does fmt.Println Print

Golang 介面:了解整數到「錯誤」的轉換

在 Golang 中使用介面時,必須理解實作該介面的類型的行為錯誤()方法。如給定程式碼片段所示:

type T int

func (t T) Error() string {
    return "bad error"
}

func main() {
    var v interface{} = T(5)
    fmt.Println(v) //output: bad error, not 5
}

意圖是為類型 T 定義 Error() 方法,期望列印值 5。然而,輸出令人驚訝地顯示“bad error”。為了弄清楚這個現象,我們必須深入研究fmt包的文檔:

「如果操作數實現了error接口,則會調用Error方法將對象轉換為字符串,然後將其格式化根據動詞的要求(如果有的話)。變體Println 在運算元之間插入空格並附加換行符。由於 T 實作了錯誤接口,因此會呼叫 Error() 方法,將值轉換為“錯誤錯誤”,隨後將其列印出來。

要列印整數值,需要使用特定的格式說明符,如:

以上是為什麼當 Integer 實作 Go 中的 Error 介面時,fmt.Println 會列印「bad error」而不是 5?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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