douchuang4402 2017-07-20 13:34
浏览 28
已采纳

将数据库列扫描到带有切片的结构中

I have a struct with fields containing slices like so, and now I want to collect the columns from a sql-query into these slices

type StructOfSlices struct {
    Column1 []string
    Column2 []string
}

Is there an easier/more scalable/efficient way to do it than the below?

Here I first create a "single" version of the struct...

type StructSingle struct {
    Column1 string
    Column2 string
}

var s StructOfSlices

rows, _ := db.Query("SELECT column1, column2 FROM table")

...and then scan each individual single struct...

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

...and then append to the slice struct

  • 写回答

1条回答 默认 最新

  • dsux90368 2017-07-20 14:01
    关注

    No, that's the way to do it. You're basically doing a pivot, there's no way I know of to do that automagically. Given that you've done it in just a couple of lines of code, I don't see a problem with your solution.

    Since you're scanning into a variable per column, you don't actually need the StructSingle type at all - you could just use two local string variables, which would make it even simpler:

    for rows.Next() {
        var col1, col2 string
        db.Scan(&col1, &col2)
    
        s.Column1 = append(s.Column1, col1)
        s.Column2 = append(s.Column2, col2)
    }
    

    And get rid of the StructSingle type entirely.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答