Как вставить массив записей внутри диапазона

Как вставить структуру в диапазон?

    //Department array (department table)
    var depValues []model.Department = []model.Department{
            model.Department{DepartmentName: "Software Analyst", DeptCode: "SA"},
            model.Department{DepartmentName: "Business Analyst", DeptCode: "BA"},
    }

    for _, dep := range depValues {
            db.Create(&dep) //It's working fine
        }

Здесь dep.ID возвращает обе записи id

    //Another array (employee table)
    var empValues []model.Employee = []model.Employee{
            model.Employee{EmpId: "001", EmpName: "samsung", departmentRef: dep.ID},
            model.Employee{EmpId: "002", EmpName: "Nokia", departmentRef: dep.ID},
        }

Теперь я хочу вставить departmentId в таблицу employee. Как я могу это сделать? Любой может меня научить.

Уже пробовали

Он будет возвращать повторяющиеся значения

var depValues []model.Department = []model.Department{
        model.Department{DepartmentName: "Software Analyst", DeptCode: "SA"},
        model.Department{DepartmentName: "Business Analyst", DeptCode: "BA"},
    }

        for _, dep := range depValues {
            db.Create(&dep)
            //Insert into Employee
            var empValues []model.Employee = []model.Employee{
                model.Employee{EmpId: "001", EmpName: "samsung", DepRefer: dep.ID},
                model.Employee{EmpId: "002", EmpName: "Nokia", DepRefer: dep.ID},
            }

            for _, empv := range empValues {
                db.Create(&empv)
            }
        }

Повторяющиеся записи базы данных

    '1', '2018-07-10 15:12:27', '2018-07-10 15:12:27', NULL, '001', 'samsung', '1'
    '2', '2018-07-10 15:12:28', '2018-07-10 15:12:28', NULL, '002', 'Nokia', '2'
    '3', '2018-07-10 15:12:29', '2018-07-10 15:12:29', NULL, '001', 'samsung', '1'
    '4', '2018-07-10 15:12:29', '2018-07-10 15:12:29', NULL, '002', 'Nokia', '2'

Что произошло на самом деле и чего вы ожидали? Пожалуйста, добавьте эту информацию к своему вопросу.

mbuechmann 10.07.2018 11:50

Почему вы вкладываете цикл сотрудника в цикл отдела?

leaf bebop 10.07.2018 12:45

Убедитесь, что вы устанавливаете идентификатор или какой-либо другой атрибут уровня model.Department, является ли этот тип идентификатора интерфейсом {}

noelyahan 10.07.2018 13:55

Потому что мне нужен идентификатор отдела, поэтому сотрудник используется внутри цикла @leafbebop

Udayakumar 10.07.2018 14:57

Я не могу вас правильно понять. Можете ли вы предоставить желаемый результат?

leaf bebop 10.07.2018 15:11

Длина таблицы отдела равна двум, поэтому цикл exec. два раза означает, что сотрудник вставляет запись в четыре раза (дубликаты). Итак, как я могу решить проблему? @leafbebop

Udayakumar 10.07.2018 16:29
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
2
6
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я правильно понял ваш вопрос, у вас есть две переменные, и обе они являются срезами. Вы хотите добавить одну из них к другой:

это ваш код и результат:

func main() {
var depValues = []Department{
    {DepartmentName: "Software Analyst", DeptCode: "SA"},
    {DepartmentName: "Business Analyst", DeptCode: "BA"},
}

for _, dep := range depValues {
    fmt.Println(dep)
    var empValues = []Employee{
        {EmpId: "001", EmpName: "samsung", DepRefer: 1},
        {EmpId: "002", EmpName: "Nokia", DepRefer: 2},
    }

    for _, empv := range empValues {
        fmt.Println(empv)
    }
}
}

ваш результат

 {Software Analyst SA []}
 {001 samsung 1}
 {002 Nokia 2}
 {Business Analyst BA []}
 {001 samsung 1}
 {002 Nokia 2} 

И это мой код и результат

type Department struct {
DepartmentName string
DeptCode string
Employee []Employee
}

type Employee struct {
 EmpId string
 EmpName string
 DepRefer  int

}

 func main() {

     var depValues  = []Department{
        {DepartmentName: "Software Analyst", DeptCode: "SA"},
        {DepartmentName: "Business Analyst", DeptCode: "BA"},
    }

    var empValues  = []Employee{
        {EmpId: "001", EmpName: "samsung", DepRefer: 1},
        {EmpId: "002", EmpName: "Nokia", DepRefer: 2},
    }

    for _, dep := range depValues {
        dep.Employee = empValues
        fmt.Println(dep)
    }
 }

и результат:

{Software Analyst SA [{001 samsung 1} {002 Nokia 2}]}
{Business Analyst BA [{001 samsung 1} {002 Nokia 2}]}

Другие вопросы по теме