我可以在scanner.go
中看到该结构具有error
方法。
// A SyntaxError is a description of a JSON syntax error.
type SyntaxError struct {
msg string // description of error
Offset int64 // error occurred after reading Offset bytes
}
func (e *SyntaxError) Error() string { return e.msg }
但是编译器告诉我这个:
尝试在类型上执行切换案例时 api/errors.go:24: impossible type switch case: err (type error) cannot have dynamic type json.SyntaxError (missing Error method)
func myFunction(err error) {
switch err.(type) {
case validator.ErrorMap, json.SyntaxError:
response.WriteErrorString(http.StatusBadRequest, "400: Bad Request")
//etc
为什么这不编译?因为结构具有Error
方法。
答案 0 :(得分:6)
事实证明func (e *SyntaxError) Error() string { return e.msg }
是指针的方法,而我正在寻找值的方法。我设法通过*json.SyntaxError
来引用指针来解决问题。