Postgresql 可变参数切片索引
我正在使用PostgreSQL作为我服务的数据库,带有go后端。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和
查询数据库后,我可以使用
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(容器…[]接口{})错误{