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

将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条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?