go - 选择特定列时如何获取对应的字段?

标签 go sqlx

代码如下:

// User Model
type User struct {
    UserID        int           `db:"user_id"`
    UserNme       string        `db:"user_nme"`
    UserEmail     string        `db:"user_email"`
    UserAddressID sql.NullInt64 `db:"user_address_id"`
}
func (ur *userRepository) FindAll() ([]models.User, error) {
    var users []models.User
    query := "select user_nme from users"
    err := ur.Db.Select(&users, query)
    if err != nil {
        return nil, err
    }
    return users, nil
}

结果:

&[]models.User{models.User{UserID:0, UserNme:"Jay Durgan", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}, models.User{UserID:0, UserNme:"Arne Balistreri", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}, models.User{UserID:0, UserNme:"Greg Willms", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}, models.User{UserID:0, UserNme:"Lady Aisha McLaughlin", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}, models.User{UserID:0, UserNme:"Mrs. Phoebe Boyle", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}}% 

如您所见,我没有查询 user_iduser_emailuser_address_id 列,但结果显示这些字段为零值(value)。

那么,有没有办法只获取查询到的列对应的字段呢? 另外,我不想这样写: &user.userNme, &user.xxx, &user.xxx 就是写每个字段并填充它。太冗长了。

预期结果是:{UserNme: "Jay Durgan"}...

最佳答案

通过使用结构,你不能。

其他字段仍将保留为零值。这些字段是结构的属性,因此无论您是否需要它,无论它是否存储从数据库操作中检索到的值,所有字段都将仍然存在。

您的情况的唯一解决方案是使用 map ,因此只会检索对应字段的值。

var users []map[string]interface{}
query := "select user_nme from users"
err := ur.Db.Select(&users, query)
if err != nil {
    return nil, err
}

结果:

&[]map[string]interface{}{map[string]interface{}{UserNme:"Jay Durgan"}, ...}

关于go - 选择特定列时如何获取对应的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56746785/

相关文章:

dll - 是否可以在平板电脑上运行我的 Windows 8 C/go/html 程序

go - Go 中连接前导零的惯用方法

go - 在 golang 项目中查询 sqlx 后数据库连接仍在使用中

json - Go中如何自定义JSON编码输出?

go - 无法让接口(interface)片段工作

algorithm - 算法:两个有序列表之间的差异,按顺序和组成

postgresql - 使用 ORM 将任意数据检索到嵌套对象中

mysql - 如何预处理使用 sqlx 获取的行?

sql - 在 Go 中初始化和保留准备好的语句的推荐方法是什么?

sql - 奇怪的 Golang SQL 错误 - WHERE 子句