- package main
-
- import "fmt"
-
- type myErr struct {}
-
- func (*myErr)Error() string {
- return "My err"
- }
-
- func main() {
- var err error
- err = do()
- fmt.Println(err == nil) // 输出false
- }
-
- func do() *myErr {
- return nil
- }
上面代码err明明是nil,最终输出是false。
因为err带了类型,带了类型的err,被转成接口后,不再等于nil。
之前在gorm上面的事务里遇到了这个问题。