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

我正在编写一个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.Profile

var mybio string

...

Connection.QueryRow(...).Scan(...,&mybio)

profile.Bio=&mybio

有没有更简单的方法来将行扫描到可能具有指针的结构?


至尊宝的传说
浏览 106回答 1
1回答

千巷猫影

如果 已经是指针,则无需在 Scan 调用中获取额外的指针:Bioprofile := 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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go