一尘不染

将Postgresql数组直接读取到Golang Slice中

go

我有一个查询,该查询返回一行,其中一行包含一个字符串数组(character varying[]):

{http://wp.me/p62MJv-Jc,http://tyrant.click/1LGBoD6}

有没有简单的方法可以直接将其读入Golang切片中?例如

var arr []string

for rows.Next() {
    rows.Scan(&arr)
    fmt.Println(len(arr))
}

产生:

0

阅读 437

收藏
2020-07-02

共1个答案

一尘不染

正如Victor在原始帖子的评论中提到的那样,帖子以的解释很好地回答了这个问题pq.Array()

直接从链接中获取:

要将Postgres数组值读入Go切片,请使用:

func getTags(db *sql.DB, title string) (tags []string) {
    // the select query, returning 1 column of array type
    sel := "SELECT tags FROM posts WHERE title=$1"

    // wrap the output parameter in pq.Array for receiving into it
    if err := db.QueryRow(sel, title).Scan(pq.Array(&tags)); err != nil

{
log.Fatal(err)
}

    return
}

我也已经在自己的项目中使用了此功能,因此可以确认它是否有效。

2020-07-02