我尝试定义“错误”方法来键入“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 关注
- 102 浏览
添加回答
举报
0/150
提交
取消