我可以在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/