Как заполнить массив, используя идентификаторы другого массива в Golang - PullRequest
0 голосов
/ 25 апреля 2020

Так что я хочу получить все commPlans из идентификаторов внутри comms, но по какой-то причине я получаю только один объект (который является первым идентификатором в comms). Вот мой код:

comms := models.GetComms(CommID)
if comms == nil {
    componentsJson.WriteError(ctx, componentsError.ERROR_PARAMETERS_INVALID)
    return
}

var commPlans []models.CommPlan
for _, comm := range comms {
    commPlans = models.GetCommPlans(comm.CommPlanID)
}
if commPlans == nil {
    componentsJson.WriteError(ctx, componentsError.ERROR_PARAMETERS_INVALID)
    return
}

1 Ответ

2 голосов
/ 25 апреля 2020

Вам нужно append результат от GetCommPlans до commPlans среза, прямо сейчас вы перезаписываете любой ранее возвращенный результат.

Либо выполните:

comms := models.GetComms(CommID)
if comms == nil {
    componentsJson.WriteError(ctx, componentsError.ERROR_PARAMETERS_INVALID)
    return
}

// a slice of slices
var commPlans [][]models.CommPlan
for _, comm := range comms {
    commPlans = append(commPlans, models.GetCommPlans(comm.CommPlanID))
}
if commPlans == nil {
    componentsJson.WriteError(ctx, componentsError.ERROR_PARAMETERS_INVALID)
    return
}

Или:

comms := models.GetComms(CommID)
if comms == nil {
    componentsJson.WriteError(ctx, componentsError.ERROR_PARAMETERS_INVALID)
    return
}

var commPlans []models.CommPlan
for _, comm := range comms {
    commPlans = append(commPlans, models.GetCommPlans(comm.CommPlanID)...)
}
if commPlans == nil {
    componentsJson.WriteError(ctx, componentsError.ERROR_PARAMETERS_INVALID)
    return
}
...