gpt4 book ai didi

go - 使用 slice 将数据库列扫描到结构中

转载 作者:IT王子 更新时间:2023-10-29 02:29:12 26 4
gpt4 key购买 nike

我有一个结构,其字段包含这样的 slice ,现在我想将 sql 查询中的列收集到这些 slice 中

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

...然后附加到 slice 结构

最佳答案

不,这就是这样做的方式。你基本上是在做一个枢轴,我不知道如何自动做到这一点。鉴于您只用了几行代码就完成了,我认为您的解决方案没有问题。

由于您正在扫描每列一个变量,因此您实际上根本不需要 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 类型。

关于go - 使用 slice 将数据库列扫描到结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45216349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com