Postgresql 可变参数切片索引

Postgresql 可变参数切片索引,postgresql,go,Postgresql,Go,我正在使用PostgreSQL作为我服务的数据库,带有go后端。 查询数据库后,我可以使用rows.Next()和rows.Scan(XX)访问行: func-All(插座…接口{})(错误){ [...] 对于行。下一个(){ err=行。扫描(插座…) 如果错误!=零{ tx.回滚() 返回零,错误 } } 行。关闭() [...] } func main(){ var myInt1 int var myInt2 int var myString字符串 全部(&myInt1、&myInt2和

我正在使用PostgreSQL作为我服务的数据库,带有go后端。
查询数据库后,我可以使用
rows.Next()和
rows.Scan(XX)
访问行:

func-All(插座…接口{})(错误){
[...]
对于行。下一个(){
err=行。扫描(插座…)
如果错误!=零{
tx.回滚()
返回零,错误
}
}
行。关闭()
[...]
}
func main(){
var myInt1 int
var myInt2 int
var myString字符串
全部(&myInt1、&myInt2和&myString)
//所有3个变量都已正确设置
}
这里,
插座
是可变的。 如果我的查询返回两个int和一个字符串,而不是执行
rows.Scan(&myInt1,&myInt2,&myString)
,我将使用函数的参数
rows.Scan(args…)

当从BD请求一行(并且只有一行)时,这是非常有效的

我想做的是使用相同的过程来存储多行:

func main(){
变量myInts1[]int
var myInts2[]int
var myStrings[]字符串
所有(&myInts1、&myInts2和&myStrings)
//myInts1=[]int{firstRowInt1,secondRowInt1,…}
//myInts2=[]int{firstRowInt2,secondRowInt2,…}
//myString=[]字符串{firstRowString,secondRowString,…}
}
有没有办法告诉函数使用可变参数的索引X,类似这样:
行.扫描(插座[0]…)


我的猜测(并尝试)是否定的,但我想确认这一假设

对于每次需要初始化要扫描到的值的迭代,您可以使用
reflect
包在一个地方执行该操作,或者您可以声明一个接口,并拥有您想要与函数一起使用的所有切片类型,实现该接口。“是否有一种方法可以告诉函数使用可变参数的索引X,类似这样:rows.Scan(容器[0]…)?”如果可变参数的元素声明为切片,则为“是”。即
func All(容器…[]接口{})错误{