【发布时间】:2020-11-29 22:37:32
【问题描述】:
我有多个结构:
type FooStruct struct {
ID int
Field1 int
CommonID int
}
type BarStruct struct {
ID int
Field2 int
CommonID int
}
type FighterStruct struct {
ID int
Field3 int
CommonID int
}
1- 它们都保存在不同的切片中: sliceOfFooStruct 、 sliceOfBarStruct 、 sliceofFighterStruct
2- 我正在遍历每个切片并将它们未排序地插入到一个 commun var commonSlice []interface{} 切片中
3- 然后我需要按 CommonID 将它们排序到该切片中,这就是我卡住的地方。
我正在努力:
sort.Slice(commonSlice, func(i, j int) bool { return commonSlice[i].CommonID > commonSlice[j].CommonID })
但我得到了错误
commonSlice[i].CommonID undefined (type interface {} is interface with no methods)
我也尝试过使用 commonSlice[i].CommonID.(int) 强制转换类型,但它也不起作用。
也尝试了类似this 的匿名结构和 CommonID 字段,但没有成功。
如果我直接转换被比较的实际结构的类型,我认为它可以工作,但硬编码类型会破坏“commonSlice”的全部目的。
这是怎么做到的?我应该做不同的事情吗?
【问题讨论】:
-
“我应该做不同的事情吗?”是的,不要使用空接口。
-
是的,icza 已经回答了,我不再使用自定义界面。无论如何,感谢您的巨大贡献。