我有一个查询,该查询返回一行,其中一行包含一个字符串数组(character varying[]):
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
正如Victor在原始帖子的评论中提到的那样,该帖子以的解释很好地回答了这个问题pq.Array()。
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 }
要将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 }
我也已经在自己的项目中使用了此功能,因此可以确认它是否有效。