Golang Postgresql数组

时间:2017-11-24 21:02:11

标签: postgresql go

如果我有一个返回类似的表:

id: 1
names: {Jim, Bob, Sam}

names是一个varchar数组。

如何将其扫描回Go中的[]字符串? 我正在使用lib / pg

现在我有类似

的东西
rows, err := models.Db.Query("SELECT pKey, names FROM foo")
for rows.Next() {
            var pKey int
            var names []string
            err = rows.Scan(&pKey, &names)
}

我一直在:

panic: sql: Scan error on column index 1: unsupported Scan, storing driver.Value type []uint8 into type *[]string

看起来我需要使用StringArray https://godoc.org/github.com/lib/pq#StringArray

但是,我认为我太新了,不能去了解如何使用: func (a *StringArray) Scan(src interface{})

1 个答案:

答案 0 :(得分:3)

你是对的,你可以使用StringArray,但不需要调用

func (a *StringArray) Scan(src interface{})
自己

方法,当你传递实现Scanner接口的任何内容时,rows.Scan会自动调用它。

所以您需要做的是将<{1}}转换为<{strong> []string并将其传递给*StringArray,如下所示:

rows.Scan