为了账号安全,请及时绑定邮箱和手机立即绑定

golang 中单个数组中的多响应

golang 中单个数组中的多响应

Go
斯蒂芬大帝 2022-08-30 21:01:09
我是golang的新手。我想得到我的回复作为多个结果。我做了一些方法,但我需要改变那个impartErrl := ph.profileService.ValidateSchema(gojsonschema.NewStringLoader(string(b)))        if impartErrl != nil {            ctx.JSON(http.StatusBadRequest, impart.ErrorResponse(impartErrl))            return        }func (ps *profileService) ValidateSchema(document gojsonschema.JSONLoader) (errors []impart.Error) {    result, err := gojsonschema.Validate(ps.schemaValidator, document)    if err != nil {        ps.SugaredLogger.Error(err.Error())        return impart.ErrorResponse(            impart.NewError(impart.ErrBadRequest, "unable to validate schema"),        )    }    if result.Valid() {        return nil    }    // msg := fmt.Sprintf("%v validations errors.\n", len(result.Errors()))    msg := "validations errors"    for i, desc := range result.Errors() {        msg += fmt.Sprintf("%v: %s\n", i, desc)        er := impart.NewError(impart.ErrValidationError, fmt.Sprintf("%s ", desc), impart.ErrorKey(desc.Field()))        errors = append(errors, er)    }    return errors}func NewError(err error, msg string, args ...interface{}) Error {    key := GetErrorKey(args...)    return impartError{        err: err,        msg: msg,        key: key,    }}func ErrorResponse(err interface{}) []Error {    var errorResponse []Error    switch err.(type) {    case Error:        errorResponse = []Error{err.(Error)}    case []Error:        errorResponse = err.([]Error)    default:        errorResponse = []Error{            NewError(ErrUnknown, fmt.Sprintf("%v", err)),        }    }    return errorResponse}type Error interface {    error    HttpStatus() int    ToJson() string    Err() error    Msg() string}我怎样才能得到这些类型的回应。?因为在ios应用程序中,在解析响应[]时显示错误。所以我需要改变输出。
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

函数应返回 a 而不是 。例如:ErrorResponsemap[int]Error[]Error


func ErrorResponse(err interface{}) map[int]Error {

    errorResponse := map[int]Error{}

    switch e := err.(type) {

    case Error:

        errorResponse[0] = e

    case []Error:

        for i, k := range e {

            errorResponse[i] = k

        }

    default:

        errorResponse[0] = NewError(ErrUnknown, fmt.Sprintf("%v", err))

    }

    return errorResponse

}


查看完整回答
反对 回复 2022-08-30
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信