为什么接口对于自定义类型的错误方法会返回“bad error”?
在 Go 中,可以使用接口为类型定义方法。当对象实现接口时,它为该接口定义的每个方法提供实现。
考虑以下示例:
type T int func (t T) Error() string { return "bad error" } func main() { var v interface{} = T(5) fmt.Println(v) // Output: "bad error" }
在此示例中,定义了 Error 方法对于类型 T。但是,当使用 fmt.Println 打印值 v 时,输出是“错误错误”而不是预期的整数值 5。要理解此行为,让我们参考fmt 包文档:
这种情况下使用 fmt.Println 函数,相当于 fmt.Printf("%v", v)。下面是对所发生情况的解释:
要打印 v 的整数值,可以使用 fmt.Printf("%d",v)。
以上是当类型实现'error”接口时,为什么'fmt.Println”打印'错误错误”而不是整数值?的详细内容。更多信息请关注PHP中文网其他相关文章!