渐进式编程课
Go 目录
第 19 课2026.09.24

只对时长校验错误显示有针对性的输入提示。

第 19 课:按错误身份显示校验提示

  • 日期:2026-09-24
  • 课程序号:第 19 课
  • 知识点:依据 errors.Is 分支处理

用途或适用场景

只对时长校验错误显示有针对性的输入提示。

核心概念

errors.Is 会沿包装链匹配底层错误;调用方据此选择提示,而不是解析错误文字。

最小代码或操作示例

go
package main

import (
    "errors"
    "fmt"
)

var errMinutes = errors.New("minutes must be positive")
func validate(minutes int) error {
    if minutes <= 0 { return fmt.Errorf("minutes=%d: %w", minutes, errMinutes) }
    return nil
}
func main() {
    if err := validate(-3); errors.Is(err, errMinutes) {
        fmt.Println("请输入正数分钟")
    }
}

3~5 分钟练习

把 -3 改为 5,观察提示是否出现。

参考答案

不输出提示;成功结果是 nil,errors.Is(nil, errMinutes) 为 false。

与上一课的联系

沿用第 18 课的 errMinutes、validate、%w 和 errors.Is;本课只把匹配结果用于调用方提示分支;完成后下一课可为另一类错误增加独立提示。

时效校验

时效校验:2026-09-24(Go 标准库 errors.Is 与 fmt.Errorf 官方文档;错误包装和匹配最低 Go 1.13,未见废弃标记)。

官方参考