golang中的错误处理

golang中的错误处理,go,Go,我需要用错误代码处理错误,并以JSON格式返回错误,如下所示 { "errorCode":400, "errors":[ { "errorField":"dispachNumber", "errorDescription": "This is not a valid dispatch Number" }, { "errorField":"phone",

我需要用错误代码处理错误,并以JSON格式返回错误,如下所示

{
    "errorCode":400,
    "errors":[
        {
            "errorField":"dispachNumber",
            "errorDescription": "This is not a valid dispatch Number"
        },
        {
            "errorField":"phone",
            "errorDescription": "Phone numbers must be in the XXX-XXX-XXXX format"
        }
    ]
}

{
    "errorCode":500,
    "errors":[
        {
            "errorDescription": "there was an internal server error"
        }
    ]
}
我的问题是如何处理这种方式,这里我只能处理单个错误,但当我处理多个错误时,它只返回一个错误结构,请参见代码我是如何处理的

Errors := ErrorHandle(403, "User Id", "User Id must be of integer type")
Errors = ErrorHandle(403, "Phone Number", "Phone Number type")
ErrorHandle()
的功能如下

func ErrorHandle(ErrorCode int, ErrorFields, ErrorDesc string) []Errors {
    AllErrors := []Errors{}

    if len(AllErrors) > 0 {
        AllErrors = IterateErrors(AllErrors, ErrorCode, ErrorFields, ErrorDesc)
    } else {
        Errorsvalue := Errors{
            ErrorCode: ErrorCode,
        }
        Error := Error{}
        Error.ErrorFields = ErrorFields
        Error.ErrorDescription = ErrorDesc
        Errorsvalue.ErrorDesc = append(Errorsvalue.ErrorDesc, Error)

        AllErrors = append(AllErrors, Errorsvalue)
    }
    return AllErrors
}

提前谢谢

您总是创建一个新的空
AllErrors
切片,向其中添加一个错误,然后返回它

您的
ErrorHandle
应该获取现有的错误列表并附加到其中,或者您应该使用自定义的
type errors[]Error

type Errors []Error
func (Errors *e) ErrorHandle(...) {
  ...
  e = append(e, <new error>)
}

Errors myerrors;
myerrors.ErrorHandle(<first error>)
myerrors.ErrorHandle(<second error>)
类型错误[]错误
func(Errors*e)ErrorHandle(…){
...
e=附加(e,)
}
错误;
myerrors.ErrorHandle()
myerrors.ErrorHandle()

这只是高级代码,您应该能够填充其余的。

您总是创建一个新的空
AllErrors
切片,向其添加一个错误,然后返回它

您的
ErrorHandle
应该获取现有的错误列表并附加到其中,或者您应该使用自定义的
type errors[]Error

type Errors []Error
func (Errors *e) ErrorHandle(...) {
  ...
  e = append(e, <new error>)
}

Errors myerrors;
myerrors.ErrorHandle(<first error>)
myerrors.ErrorHandle(<second error>)
类型错误[]错误
func(Errors*e)ErrorHandle(…){
...
e=附加(e,)
}
错误;
myerrors.ErrorHandle()
myerrors.ErrorHandle()

这只是高级代码,您应该能够填写其余部分。

从外观上看,
AllErrors
ErrorHandle
的一个局部变量,每次输入
ErrorHandle
@Michael时,您都会将其初始化为一个空片段。我使用
AllErrors
作为全局变量,它工作正常,但当多个用户请求相同的URL时,可能会产生意外的结果,如何解决这些问题从表面上看,
AllErrors
ErrorHandle
的一个局部变量,每次输入
ErrorHandle
@Michael时,您都会将其初始化为一个空片段。我使用
AllErrors
作为全局变量,它工作正常,但当多个用户请求相同的URL时,可能会产生意外的结果,如何解决这些问题。感谢回复它的工作,但需要根据错误代码附加错误字段和描述。假设in Errors已经有一个403错误,然后发生另一个错误,错误代码相同(403),那么我必须只添加错误字段和与错误代码相关的Desc。然后您可以操作现有错误。代码的总体问题是每次都返回一个新片段。您需要修改现有的接口。将json对象解析到接口中,然后获取该接口的基础值,以检查错误代码是否已经存在。通过这种方式,您可以使用新的错误字段更新现有的错误片段,感谢回复它的工作,但需要根据错误代码附加错误字段和描述。假设in Errors已经有一个403错误,然后发生另一个错误,错误代码相同(403),那么我必须只添加错误字段和与错误代码相关的Desc。然后您可以操作现有错误。代码的总体问题是每次都返回一个新片段。您需要修改现有的接口。将json对象解析到接口中,然后获取该接口的基础值,以检查错误代码是否已经存在。通过这种方式,您可以使用新的错误字段更新现有的错误片段