docs(note): 补充 go 命令/excelize/MySQL 字符集笔记

This commit is contained in:
张育新
2026-08-08 18:20:19 +08:00
parent 722a5b13e0
commit f40efea159
7 changed files with 189 additions and 24 deletions
+22
View File
@@ -0,0 +1,22 @@
## `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
}
```