Как хранить значения в структуре, используя цикл for в golang - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу хранить значения в структуре.У меня есть несколько наборов данных, и, повторяя этот набор данных, я должен сохранить эти наборы в структуре.У меня также должны быть предыдущие сохраненные данные вместе с текущими.

Пожалуйста, найдите код, который я использую

    package main
    import (
      "fmt"
    )

    type saveDetails struct {
      ID string
      Grade string
      Regular string
      OpeningKey string
    }

    func main() {
       tagsList := []saveDetails {}
       results = [{ {1000000001 A Regular JOBOp123}} { {1000000002 B Regular JOBOp234}} { {1000000003 C  Regular JOBOp456}}]

       for _, details := range results {
          tagsList = append(tagsList, saveDetails {ID: details.ID, Grade:details.Grade, Regular:details.Regular, OpeningKey:details.OpeningKey})
       }
       fmt.Println("saveDetails :",tagsList )
     }

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

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вот рабочее решение вашей проблемы.Обратите внимание, что ваш массив results был объявлен неправильно.Ниже вы можете найти рабочее решение, в котором tagsList не относится к типу array, но использует срез, инициализированный функцией make().Я бы предложил использовать слайсы, так как массивы являются типами значений и поэтому всегда копируются при передаче или установке под новыми переменными.Срезы - это просто ссылки (то есть указатель) на базовые массивы, которые имеют различные преимущества с точки зрения производительности, если массив увеличивается с течением времени.

package main

import (
    "fmt"
)

type saveDetails struct {
    ID         string
    Grade      string
    Regular    string
    OpeningKey string
}

func main() {
    tagsList := make([]saveDetails, 0) // 0 is the initial size of the slice
    results := []saveDetails{{"1000000001", "A", "Regular", "JOBOp123"}, {"1000000002", "B", "Regular", "JOBOp234"}, {"1000000003", "C", "Regular", "JOBOp456"}}

    for _, details := range results {
        tagsList = append(tagsList, saveDetails{ID: details.ID, Grade: details.Grade, Regular: details.Regular, OpeningKey: details.OpeningKey})
    }
    fmt.Println("saveDetails :", tagsList)
}

https://play.golang.org/p/Josvx49tNf6

0 голосов
/ 28 ноября 2018

Это действующая и рабочая версия вашего кода:

package main

import (
    "fmt"
)

type saveDetails struct {
    ID         string
    Grade      string
    Regular    string
    OpeningKey string
}

func main() {
    var tagsList []saveDetails
    results := []saveDetails{saveDetails{ID: "1000000001", Grade: "A", Regular: "Regular", OpeningKey: "JOBOp123"}, saveDetails{ID: "1000000001", Grade: "A", Regular: "Regular", OpeningKey: "JOBOp123"}}

    for _, details := range results {
        tagsList = append(tagsList, saveDetails{
            ID: details.ID, Grade: details.Grade, Regular: details.Regular, OpeningKey: details.OpeningKey,
        })
    }
    fmt.Println("saveDetails :", tagsList)
}

https://play.golang.org/p/vVQGPTnph6z

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...