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