我嘗試定義“錯誤”方法來鍵入“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條經(jīng)驗 獲得超5個贊
這是來自fmt
包的文檔:
如果操作數(shù)實現(xiàn)了錯誤接口,將調(diào)用 Error 方法將對象轉(zhuǎn)換為字符串,然后根據(jù)動詞(如果有)的要求對其進行格式化。
還:
對于每個類似 Printf 的函數(shù),還有一個不采用格式的 Print 函數(shù),相當于對每個操作數(shù)說 %v。另一個變體 Println 在操作數(shù)之間插入空格并附加一個換行符。
因此,該值v
是使用打印%v
的,它將使用error
界面打印出來。
如果您使用fmt.Printf("%d",v)
,它應該打印整數(shù)值。
- 1 回答
- 0 關(guān)注
- 118 瀏覽
添加回答
舉報
0/150
提交
取消