gpt4 book ai didi

go - 如何在golang中声明一个函数接受一个接口(interface)数组?

转载 作者:IT王子 更新时间:2023-10-29 00:47:26 25 4
gpt4 key购买 nike

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

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

最佳答案

该问题正确地声明了 setItemList 方法,假设您需要一个可变参数。因为 setList 函数适用于任何 Mongo 文档类型,所以在这种情况下使用 interface{} 是合适的。

[]*cv_type.CvJobItemRaw 无法转换为 []interface{}。编写一个循环以从 jobList 创建 []interface{}

jobList := cvRaw.GetJobList()
s := make([]interface{}, len(t))
for i, v := range t {
s[i] = v
}
this.setItemList(jobColl, s...)

参见 Go Language FAQ了解更多详情。

关于go - 如何在golang中声明一个函数接受一个接口(interface)数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33940337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com