“无法将myType用作类型接口{}”吗?我以为Go中所有类型都算作interface {}?

我正在尝试编写一个可以采用任何类型的函数(更具体地说,试图使它采用任何类型的protobuffer,但如果需要的话,我会适应更广泛的通用性)。根据我所读的内容,似乎可以这样完成:


func processSlice(mySlice []interface{}) void{

  // Do stuff in here

}

但是,当我尝试将其与一片原型一起使用时,出现以下错误:


cannot use myProtoSlice (type []*MyProto) as type []interface{} in argument to processSlice


吃鸡游戏
浏览 424回答 2
2回答

墨色风雨

您无法将切片从一种类型的切片转换为另一种类型(您可以键入),这会很昂贵,并且他们决定最好使您明确。为您实际上需要处理的每个切片类型编写函数(如果您知道类型并且数量不多),可能就不会那么痛苦。

明月笑刀无情

该错误清楚地描述了:无法在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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go