注意checkErr()的返回值error是接口类型 如果把一个带有类型的 nil 赋值给接口时 error = (*MyError)nil,在接口的底层实现中只有 data 为 nil,而 type不为nil,因此,返回值与 nil 判断将不相等。