如果我有一个返回如下内容的表:
id: 1
names: {Jim, Bob, Sam}
Run Code Online (Sandbox Code Playgroud)
名称是一个 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)
}
Run Code Online (Sandbox Code Playgroud)
我不断得到:
panic: sql: Scan error on column index 1: unsupported Scan, storing driver.Value type []uint8 into type *[]string
Run Code Online (Sandbox Code Playgroud)
看起来我需要使用 StringArray https://godoc.org/github.com/lib/pq#StringArray
但是,我认为我太新了,无法准确了解如何使用:
func (a *StringArray) Scan(src interface{})
你是对的,你可以使用StringArray但你不需要调用
func (a *StringArray) Scan(src interface{})
Run Code Online (Sandbox Code Playgroud)
自己的方法,rows.Scan当你传递任何实现Scanner接口的东西时,它会自动调用。
因此,您需要做的是将您转换[]string为*StringArray并将其传递给rows.Scan,如下所示:
rows, err := models.Db.Query("SELECT pKey, names FROM foo")
for rows.Next() {
var pKey int
var names []string
err = rows.Scan(&pKey, (*pq.StringArray)(&names))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7846 次 |
| 最近记录: |