我正在尝试编写一个可以采用任何类型的函数(更具体地说,试图使它采用任何类型的protobuffer,但如果需要的话,我会适应更广泛的通用性)。根据我所读的内容,似乎可以这样完成:func processSlice(mySlice []interface{}) void{ // Do stuff in here}但是,当我尝试将其与一片原型一起使用时,出现以下错误:cannot use myProtoSlice (type []*MyProto) as type []interface{} in argument to processSlice
2 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
您无法将切片从一种类型的切片转换为另一种类型(您可以键入),这会很昂贵,并且他们决定最好使您明确。
为您实际上需要处理的每个切片类型编写函数(如果您知道类型并且数量不多),可能就不会那么痛苦。
明月笑刀无情
TA贡献1828条经验 获得超4个赞
该错误清楚地描述了:
无法在processSlice的参数中将myProtoSlice(类型[] * MyProto)用作类型[] interface {}
[]interface{}接口的interface{}类型不是不同。Golang对类型严格。
将接口切片更改为仅接口,以包装您在函数中接收的值。修改以下代码:
func processSlice(mySlice []interface{}) void{
// Do stuff in here
}
传递接口
func processSlice(mySlice interface{}) void{
// Do stuff in here
}
- 2 回答
- 0 关注
- 423 浏览
添加回答
举报
0/150
提交
取消