如果我有一个返回类似的表:
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{})
答案 0 :(得分:3)
你是对的,你可以使用StringArray
,但不需要调用
func (a *StringArray) Scan(src interface{})
自己方法,当你传递实现Scanner接口的任何内容时,rows.Scan
会自动调用它。
所以您需要做的是将<{1}}转换为<{strong> []string
并将其传递给*StringArray
,如下所示:
rows.Scan