如何在golang中声明一个函数接受一个接口数组?

我想声明一个函数接受接口数组,例如:

func (this *CvStoreServiceImpl) setItemList(coll *mgo.Collection, itemList ...interface{}) (err error)

然而,当我像下面这样调用这个函数时失败了:

jobList := cvRaw.GetJobList()
this.setItemList(jobColl, jobList...)

这是错误:

cannot use cvRaw.GetJobList() (type []*cv_type.CvJobItemRaw) as type []interface {} in argument to this.setItemList



翻翻过去那场雪
浏览 295回答 2
2回答

素胚勾勒不出你

这个问题正确地声明了setItemList方法,假设你想要一个可变参数。由于该setList函数适用于任何 Mongo 文档类型,因此适合interface{}在此场景中使用。A[]*cv_type.CvJobItemRaw不能转换为 a []interface{}。编写一个循环来创建[]interface{}from jobList。jobList := cvRaw.GetJobList()s := make([]interface{}, len(t))for i, v := range t {    s[i] = v}this.setItemList(jobColl, s...)有关更多详细信息,请参阅Go 语言常见问题解答。

幕布斯6054654

我想你要找的是这个package mainimport "fmt"func main() {    interfacetious := []interface{}{"s", 123, float64(999)}    stuff(interfacetious)    stuff2(interfacetious...)    stuff2("or", 123, "separate", float64(99), "values")}// Stuff can only work with slice of thingsfunc stuff(s []interface{}) {    fmt.Println(s)}// Stuff2 is polyvaridc and can handle individual vars, or a slice with ...func stuff2(s ...interface{}) {    fmt.Println(s)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go