首页 > 后端开发 > Golang > 如何在 Go 中将'SELECT *”列读入 []string 切片中?

如何在 Go 中将'SELECT *”列读入 []string 切片中?

Mary-Kate Olsen
发布: 2024-11-15 01:27:02
原创
877 人浏览过

How to Read

在 Go 中将“SELECT *”列读入 [] 字符串

在数据库世界中,使用“SELECT”从表中获取数据”查询是一种常见的做法,但在编程领域,手动处理此类数据可能很麻烦。本文旨在利用强大的 Go 标准库,简化在 Go 中将“SELECT ”查询结果读取到 []string 切片的过程。

处理列数未知的表时和数据类型,挑战在于将数据捕获为结构化形式。 Rows 提供的 Scan 方法允许您将特定数据类型填充到预定义的变量中,但它不提供直接读取 [] 字符串的方法。

为了克服这个问题,我们采用了一种技术创建一个 []interface{} 切片,其中每个元素都是指向 []string 切片中字符串的指针。此桥接步骤允许 Scan 方法填充界面切片,然后可以轻松地将其转换为所需的 [] 字符串。

这是问题中提供的示例代码的修订版本:

func dumpTable(rows *sql.Rows, out io.Writer) error {
    colNames, err := rows.Columns()
    if err != nil {
        return err
    }
    writer := csv.NewWriter(out)
    writer.Comma = '\t'
    readCols := make([]interface{}, len(colNames))
    writeCols := make([]string, len(colNames))
    for i, _ := range writeCols {
        readCols[i] = &writeCols[i]
    }
    for rows.Next() {
        err := rows.Scan(readCols...)
        if err != nil {
            return err
        }
        writer.Write(writeCols)
    }
    if err = rows.Err(); err != nil {
        return err
    }
    writer.Flush()
    return nil
}
登录后复制

此解决方案无缝地弥合了 Scan 方法和 []string 之间的差距,允许您将“SELECT *”查询结果存储为结构化且可用的格式。

以上是如何在 Go 中将'SELECT *”列读入 []string 切片中?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板