func (rs *Rows) 扫描处理列类型的数组字符串

Wil*_*ill 0 postgresql go

我的 Postgres 数据库中有一个标签列,它是一个字符串数组。

我在 golang 的结构中将其定义为:

type device struct {
    deviceID   string
    macAddress sql.NullString
    name       sql.NullString
    agentID    sql.NullString
    groupType  sql.NullString
    tags       []string

    normalized           bool
    normalizedName       string
    normalizedMacAddress string
}
Run Code Online (Sandbox Code Playgroud)

当我对行运行扫描时:

            err = rows.Scan(&d.deviceID, &d.name, &d.tags, &d.macAddress, &d.agentID, &d.groupType)
        if err != nil {
            return nil, err
        }
Run Code Online (Sandbox Code Playgroud)

它返回以下错误:

"sql: Scan error on column index 2, name "tags": unsupported Scan...+55 more"
Run Code Online (Sandbox Code Playgroud)

那么,为了成为可接受的类型,字符串数组需要什么样的包装器呢?

Cer*_*món 5

扫描数组时使用pq.Array :

    err = rows.Scan(&d.deviceID, &d.name, pq.Array(&d.tags), &d.macAddress, &d.agentID, &d.groupType)
    if err != nil {
        return nil, err
    }
Run Code Online (Sandbox Code Playgroud)