【发布时间】:2016-05-05 18:46:47
【问题描述】:
在下面的代码中,ErrNegativeSqrt 类型实现了Stringer 和error 接口。由于在Sqrt 方法中的返回类型是fmt.Stringer,我将除了执行结果之外:
0 无
0 隐式纵梁类型
但实际结果如下,为什么呢?
0 无
0 Impl 错误类型
package main
import (
"fmt"
)
type ErrNegativeSqrt float64
func Sqrt(x ErrNegativeSqrt) (float64, fmt.Stringer) {
if x < 0 {
return 0, ErrNegativeSqrt(x)
}
return 0, nil
}
func (e ErrNegativeSqrt) String() string {
return "Impl Stringer type"
}
func (e ErrNegativeSqrt) Error() string {
return "Impl error type"
}
func main() {
fmt.Println(Sqrt(2))
fmt.Println(Sqrt(-2))
}
【问题讨论】: