如何在Golang中使用for循环在struct中存储值

时间:2018-11-28 09:12:37

标签: arrays list go arraylist struct

我想将值存储在结构中。我有多个数据集,并且在迭代这些数据集时,我必须将这些数据集存储到struct中。 我还应该拥有先前存储的数据以及当前存储的数据。

请找到我正在使用的代码

    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 )
     }

请帮助我解决此问题。我对这个数组和golang中的结构是陌生的。我不确定是否可以使用追加功能。如果我有可用的代码,可能会很有帮助。

2 个答案:

答案 0 :(得分:1)

这是您的代码的有效且有效的版本:

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

答案 1 :(得分:0)

这是解决您问题的有效方法。请注意,您的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