Files
lab/note/资源/编程/Golang/标准库.md
T
张育新 20fa8f4d5a docs(note): 重组笔记目录结构并新增 MySQL JOIN 实验笔记
- 随手记笔记按主题迁移至 note/资源/(DevOps、数据库、编程)
- Windows使用、go errors 等笔记迁移时同步更名为规范标题
- 新增 MySQL 空表 JOIN 导致排序索引失效实验笔记
- 移除 go操作excel 笔记
2026-08-28 16:48:16 +08:00

23 lines
748 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## `errors.AsType`
> *用泛型把* `errors.As` *的“先声明变量再传指针”简化为“直接返回* `(E, bool)`*”,是* `errors.As` *的语法糖升级*
**使用场景:**
- 与 `errors.As` 完全相同(按类型提取错误),但写起来更简洁
- 由于类型参数 `E` 必须是 `error` 接口的实现类型,**能在编译期避免 `errors.As` 那种“传错指针类型导致运行时 panic”的问题**
```go
// 传统 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
}
```