第 17 课2026.09.22
让多次校验失败共享同一个错误身份,便于后续识别。
第 17 课:定义可复用的校验错误
- 日期:2026-09-22
- 课程序号:第 17 课
- 知识点:
errors.New与哨兵错误
用途或适用场景
让多次校验失败共享同一个错误身份,便于后续识别。
核心概念
每次调用 errors.New 都产生不同错误值;把它保存为包级变量即可复用同一个身份。本课暂不包装上下文,下一课再结合 %w。
最小代码或操作示例
go
package main
import (
"errors"
"fmt"
)
var errMinutes = errors.New("minutes must be positive")
func validate(minutes int) error {
if minutes <= 0 { return errMinutes }
return nil
}
func main() {
fmt.Println(validate(0) == errMinutes) // true
}3~5 分钟练习
比较 validate(-3) 与 errMinutes 的身份。
参考答案
validate(-3) == errMinutes 为 true;函数返回同一个错误值。
与上一课的联系
沿用第 16 课的 validate(minutes) 和 error 返回值;本课只把失败原因提取为可复用的 errMinutes,暂不附加输入值;完成后下一课可用 %w 重新加入上下文且保留错误身份。
时效校验
时效校验:2026-09-24(Go 标准库 errors.New 与 fmt 官方文档;errors.New 未见废弃标记,最小示例不依赖新版本特性)。