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

最佳答案

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

关于go - 为什么go编译器说一个结构不满足接口(interface)要求?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36720749/

10-11 09:29