Golang 中创建错误有两种方式:
第一种: errors.New() 函数,其返回值类型为 *errors.errorString

第二种: fmt.Errorf() 函数
当使用 fmt.Errorf() 来创建错误时,核心有以下两点:

错误描述中不包含 %w 时,p.wrappedErrnil,所以底层也是调用 errors.New() 创建错误。因此错误类型就是 *errors.errorString

错误描述中包含 %w 时,p.wrappedErr 不为 nil,所以底层实例化 wrapError 结构体指针。 因此错误类型是 *fmt.wrapError,可以理解为包裹错误类型。

————————————————
原文作者:相守之路
转自链接:https://learnku.com/articles/44328
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

Reference