登录
首页 >  Golang >  Go问答

代码执行后出现错误消息

来源:stackoverflow

时间:2024-02-22 09:12:15 311浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《代码执行后出现错误消息》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我有一个循环,其中对值进行排序,并对这些值进行比较。如果存在相同的值,则会将它们从同一值数组中删除。之后,我想要执行以下操作,以便代码继续运行直到结束。之后,通知用户这些值(已删除)未被添加。但我编写了代码,因此这会导致进一步代码的执行停止。告诉我如何正确处理,以便即使相同的值满足,代码也能运行到最后,然后才输出有关这些相同值的消息。 另外:我给出的结构是json格式,没有重复。但我也想提供发生错误的信息。告诉我如何正确实现这一刻

type Result struct {
        Result  int                        `json:"result"`
        Message string                     `json:"message"`
        Status []string
    }

    var result Result

var searchProject = make([]struct{
            ProjectId string
        }, 0)

        var query string
        switch Type {
        case sku:
            query = fmt.Sprintf(`
                SELECT s.project_id
                FROM sku.sku_projects s
                WHERE s.deleted_at IS NULL
                AND s.sku_id = %d
                AND s.project_id IN (%s)
            `, val.FieldByName("SkuID").Int(), ProjectId)
        case user:
            query = fmt.Sprintf(`
                SELECT u.project_id
                FROM users.user_project u
                WHERE u.deleted_at IS NULL
                AND u.user_id = %d
                AND u.project_id IN (%s)
            `, val.FieldByName("UserID").Int(), ProjectId)
        case reason:
            query = fmt.Sprintf(`
                SELECT r.project_id
                FROM reasons.reason_projects r
                WHERE r.deleted_at IS NULL
                AND r.reason_id = %d
                AND r.project_id IN (%s)
            `, val.FieldByName("ReasonID").Int(), ProjectId)
        default:
            http.NotFound(w, r)
            return
        }
        _ = DB.Raw(query).Scan(&searchProject)

        key := make([]int, 0)
        double := make([]string, 0)
        if len(searchProject) > 0{
            for _, v := range searchProject{
                for i, value := range Projects{
                    if value == v.ProjectId{
                        key = append(key, i)
                        double = append(double, value)
                    }
                }
            }
            for _, v := range key{
                Projects = append(Projects[:v], Projects[v+1:]...)
            }
        }
            if len(key) > 0{
            if (len(Projects) != len(searchProject)) {
                http.Error(w, ("You are connecting already existing bindings"), http.StatusBadRequest)
                return
            }else {
                result.Result = 0
                result.Message = "The following project bindings already exist:"
                result.Status = double
                utils.WriteJSON(w, result)
            }
        }
        utils.WriteJSON(w, &Struct)
    }
}

正确答案


尝试使用 hashcorp 的 this library。基本上你需要将所有错误收集到一个数组中然后返回它

本篇关于《代码执行后出现错误消息》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>