我嘗試定義“錯誤”方法來鍵入“T”,但為什么值改變了?type T intfunc (t T) Error() string { return "bad error"}func main() { var v interface{} = T(5) fmt.Println(v) //output: bad error, not 5}這個案子怎么解釋?
1 回答
梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
這是來自fmt包的文檔:
如果操作數實現了錯誤接口,將調用 Error 方法將對象轉換為字符串,然后根據動詞(如果有)的要求對其進行格式化。
還:
對于每個類似 Printf 的函數,還有一個不采用格式的 Print 函數,相當于對每個操作數說 %v。另一個變體 Println 在操作數之間插入空格并附加一個換行符。
因此,該值v是使用打印%v的,它將使用error界面打印出來。
如果您使用fmt.Printf("%d",v),它應該打印整數值。
- 1 回答
- 0 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消
