在Golang中,Scanner
接口采用单个dest
参数,该参数是任意数量的interface{}
s:
// Scan copies the columns in the current row into the values pointed at by dest.
func (rs *Rows) Scan(dest ...interface{}) error
是否有一个替代函数可以返回一片接口作为结果?假设我想将dest
参数放在一个函数中,所以我不必每次都写出来。
func scanArgs() []interface{} {
}
func main() {
db.QueryRow("SELECT * FROM users").Scan(scanArgs()...)
}
我已经尝试了这个但是我遇到了方法签名的问题;我可以设置[]interface
作为返回值,但我无法在函数内轻松创建一个。{1}}。有更好的方法吗?
答案 0 :(得分:1)
您可以使用以下语法轻松地在函数内部进行分配;
package main
import "fmt"
func main() {
objs := &[]interface{}{}
objs2 := make([]interface{}, 10)
objs3 := []interface{}{}
fmt.Println(len(*objs))
fmt.Println(len(objs2))
fmt.Println(len(objs3))
}
由于所有内容都实现了空接口,因此您可以使用append
向这些集合添加任何类型。 init语法有点笨拙,可能是什么让你失望......它看起来像是因为我在那里声明类型interface{}
,通常你有一个实际的名字< / em>接口,如[]io.Writer{}
。相反,你需要那些提取卷曲。