我有一个包含像这样的切片的字段的结构,现在我想将sql-query中的列收集到这些切片中
type StructOfSlices struct {
Column1 []string
Column2 []string
}
是否有比下面更容易/更具可扩展性/更有效的方法?
这里我首先创建一个"单个"结构的版本......
type StructSingle struct {
Column1 string
Column2 string
}
var s StructOfSlices
rows, _ := db.Query("SELECT column1, column2 FROM table")
...然后扫描每个单独的结构...
for rows.Next() {
var single StructSingle
db.Scan(&single.Column1, &single.Column2)
s.Column1 = append(s.Column1, single.Column1)
s.Column2 = append(s.Column2, single.Column2)
}
...然后附加到切片结构
答案 0 :(得分:4)
不,这是做到这一点的方法。你基本上是在做一个支点,我不知道自动做到这一点。鉴于您只使用了几行代码,我认为您的解决方案没有问题。
由于您每列扫描一个变量,实际上根本不需要StructSingle
类型 - 您可以使用两个本地string
变量,这样可以使它更简单:
for rows.Next() {
var col1, col2 string
db.Scan(&col1, &col2)
s.Column1 = append(s.Column1, col1)
s.Column2 = append(s.Column2, col2)
}
完全摆脱StructSingle
类型。