748 B
748 B
errors.AsType
用泛型把
errors.As的“先声明变量再传指针”简化为“直接返回(E, bool)”,是errors.As的语法糖升级
使用场景:
- 与
errors.As完全相同(按类型提取错误),但写起来更简洁 - 由于类型参数
E必须是error接口的实现类型,能在编译期避免errors.As那种“传错指针类型导致运行时 panic”的问题
// 传统 errors.As:需要先声明变量
var mysqlErr *mysql.MySQLError
if errors.As(err, &mysqlErr) {
return true, mysqlErr.Number
}
// errors.AsType(Go 1.26+):无需预先声明变量
if mysqlErr, ok := errors.AsType[*mysql.MySQLError](err); ok {
return true, mysqlErr.Number
}