为什么go编译器说结构不满足接口呢?

时间:2016-04-19 14:04:12

标签: go

我可以在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方法。

1 个答案:

答案 0 :(得分:6)

事实证明func (e *SyntaxError) Error() string { return e.msg }是指针的方法,而我正在寻找值的方法。我设法通过*json.SyntaxError来引用指针来解决问题。