我想将值存储在结构中。我有多个数据集,并且在迭代这些数据集时,我必须将这些数据集存储到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中的结构是陌生的。我不确定是否可以使用追加功能。如果我有可用的代码,可能会很有帮助。
答案 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)
}
答案 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)
}