Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用数组字段将postgres行转换为golang结构_Postgresql_Go_Sqlx - Fatal编程技术网

Postgresql 使用数组字段将postgres行转换为golang结构

Postgresql 使用数组字段将postgres行转换为golang结构,postgresql,go,sqlx,Postgresql,Go,Sqlx,我有postgres db表作为 CREATE TABLE foo ( name varchar(50), types varchar(50)[], role varchar[10] ); 和go中相应的结构: type Foo struct { Name string `db:"name"` Types []string `db:"types"` Role string `db:"role"` } 我想将db行提取到我的结构中。现在,我可以通过以下方式实现这一点: var foo Foo

我有postgres db表作为

CREATE TABLE foo (
name varchar(50),
types varchar(50)[],
role varchar[10]
);
和go中相应的结构:

type Foo struct {
Name string `db:"name"`
Types []string `db:"types"`
Role string `db:"role"`
}
我想将db行提取到我的结构中。现在,我可以通过以下方式实现这一点:

var foo Foo
query := `SELECT name, types, roles FROM foo LIMIT 1`
err = dbConn.QueryRow(query).Scan(&foo.Name,  pq.Array(&foo.Types), &foo.Role)
但我想用直接映射实现同样的效果。比如:

var foo []Foo
query := `SELECT name, types, roles FROM foo`
dbWrapper.err = dbConn.Select(&foo, query)
var foo []Foo
query := `SELECT name, types, roles FROM foo`
dbWrapper.err = dbConn.Select(&foo, query)

上面的代码片段给了我错误,因为
类型
是pq数组。可以直接将pq数组映射为struct的一部分吗?

您可以使用
pg go
lib进行映射。请看。可以将整个结构传递给它。

多亏了,我能够通过将
[]string
替换为
pq.StringArray
来解决sqlx()本身的pq驱动程序

因此,更新后的结构如下所示:

type Foo struct {
Name string `db:"name"`
Types pq.StringArray `db:"types"` //this is what changed.
Role string `db:"role"`
}
而直接映射现在正发挥着巨大的作用