我嘗試定義“錯誤”方法來輸入“T”,但為什么值改變了?
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
}
如何解釋這個案例?
uj5u.com熱心網友回復:
這是來自fmt包的檔案:
如果運算元實作了錯誤介面,則會呼叫 Error 方法將物件轉換為字串,然后根據動詞(如果有)的要求對其進行格式化。
還:
對于每個類似 Printf 的函式,還有一個不帶格式的 Print 函式,相當于對每個運算元說 %v。另一種變體 Println 在運算元之間插入空格并附加一個換行符。
因此,v使用 列印該值%v,它將使用error介面將其列印出來。
如果使用fmt.Printf("%d",v),它應該列印整數值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/447727.html
下一篇:GoJSON編組中的指標陣列
