dongzuan4491 2015-05-27 17:18
浏览 210
已采纳

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

I have a query which returns a row with a single column containing an array of strings (character varying[]):

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

Is there any easy way to read this directly into a Golang slice? E.g.

var arr []string

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

Produces:

0
  • 写回答

4条回答 默认 最新

  • duandi6531 2018-07-27 01:46
    关注

    As mentioned by Victor in the comments on the original post, this post answers the question well with its explanation of pg.Array().

    Taken directly from the link:

    To read a Postgres array value into a Go slice, use:

    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
    }
    

    I've just got this working in a project of my own as well, so can confirm it works.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?