为了账号安全,请及时绑定邮箱和手机立即绑定

扫描到其中一些是指针的结构字段

扫描到其中一些是指针的结构字段

Go
小怪兽爱吃肉 2022-07-25 11:03:06
我正在编写一个 GO 应用程序,并试图找到一种简单的方法来扫描数据库中的一行到结构字段。我使用 pgx 连接到 postgresql 数据库gqlgen 生成了这个类:type Profile struct {    Name      string          `json:"name"`    JoinedAt  time.Time       `json:"joined_at"`    Bio       *string         `json:"bio"`}然后我得到了从数据库获取用户配置文件的功能:func GetUserProfile(ctx context.Context, profileDir string) (*model.Profile, error) {    sqlQuery := `select name,joined_at::timestamptz,bio from foo where profile_dir=$1`    var profile model.Profile    if err := Connection.QueryRow(ctx, sqlQuery, profileDir).        Scan(&profile.Name, &profile.JoinedAt, &profile.Bio); err != nil {        return nil, err    } else {        return &profile, nil    }}现在因为Bio是一个指针,我需要创建一个不是指针的变量,扫描它并将其地址分配给结构:var profile model.Profilevar mybio string...Connection.QueryRow(...).Scan(...,&mybio)profile.Bio=&mybio有没有更简单的方法来扫描一行到可能有指针的结构?
查看完整描述

1 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

如果Bio已经是一个指针,则不需要在 Scan 调用中使用额外的指针:


profile := Profile{

    Bio: new(string),

}


if err := Connection.QueryRow(ctx, sqlQuery, profileDir).

    Scan(&profile.Name, &profile.JoinedAt, profile.Bio); err != nil {

    return nil, err

} else {

    return &profile, nil

}


查看完整回答
反对 回复 2022-07-25
  • 1 回答
  • 0 关注
  • 67 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信