此问题已在此处有答案:
Type converting slices of interfaces(9个回答)
Cannot convert []string to []interface {}(7个回答)
Cannot use args (type []string) as type []interface {} [duplicate](1个答案)
slice of struct != slice of interface it implements?(6个答案)
How can I access a struct field with generics (type T has no field or method)?(1个答案)
4天前关闭。
我试图在Go语言中实现一个Node类来实现一个四叉树,我想在这个类上实现一个“insert”方法,它接受任何具有x和y坐标的东西的切片,本质上是2个浮点数。
所以我让这个方法看起来像这样:
func (node *QNode) insert(datapoints []Locatable)
其中Locatable
是以下接口:
type Locatable interface {
getPosition() (x, y float32)
}
然而我很快意识到,切片在Go中不是协变的,所以我唯一的选择是使用泛型,然后在我需要访问唯一的结构体字段时键入assert,或者只是显式地将所有内容从我的结构体切片复制到接口切片,然后将其传递到我的insert
方法中。
这是仅有的两个选项,还是有更好的方法来处理“通用切片”?
1条答案
按热度按时间bvn4nwqk1#
我有一个方法通过reflect循环
interface{} slice
然后尝试输入assert虽然不够好,但希望能激励你