假设我有一个 struct :

type User struct {
    Name  string
    Id    int
    Score int
}

以及具有相同模式的数据库表.将数据库行解析为 struct 最简单的方法是什么?我在下面添加了一个答案,但我不确定它是否是最好的.

推荐答案

这里有一种方法——只需在Scan函数中手动分配所有 struct 值.

func getUser(name string) (*User, error) {
    var u User
    // this calls sql.Open, etc.
    db := getConnection()
    // note the below syntax only works for postgres
    err := db.QueryRow("SELECT * FROM users WHERE name = $1", name).Scan(&u.Id, &u.Name, &u.Score)
    if err != nil {
        return &User{}, err
    } else {
        return &u, nil
    }
}

Sql相关问答推荐

在SQL中向每个子字节组添加字节行

Postgresql:从jsons数组到单个id索引的json

PostgreSQL:如果发现多行具有相似列值,则跳过 Select 行

为什么在这种情况下我不能使用LAG函数?

为表中每个缺少的引用创建新行

如何在SQL中按每个子组的顺序更新数据?

解析SQL Server中的嵌套JSON

直接加法(1+1)与聚合函数SUM(1+1)的区别是什么

Redshift PL/pgSQL循环中的参数化列名

Oracle中的时间戳

嵌套Json对象的SQL UPDATE WHERE

SQL OR子句如何在JOINON查询中工作?

使用 SQL 将列添加到 Access 数据库时出错

统计重复记录的总数

DbUp for sqlserver 在 dbo 授权下为非 dbo 用户创建架构

Clickhouse:左连接表到外部数组

使用 PL/PGSQL 函数 Select 返回多条记录

为 sqlite 全文搜索 (fts) 创建触发器时出现虚拟表的不安全使用

多列上的 SQL UNIQUE 约束 - 它们的组合必须是唯一的还是至少其中之一?

BigQuery 错误:SELECT 列表表达式引用 esthetician.LICENSE_TYPE,它既未在 [49:8] 分组也未聚合