似乎没有Ranger
接口可用于自定义类型的范围。有类似的东西吗?或者我是否必须创建一个将类型转换为切片或贴图的方法?
编辑:当然我可以将x转换为[] struct,但这样会更难改变x的基础类型。
答案 0 :(得分:2)
range
循环的for
变体无法扩展到不仅重命名的切片,地图,字符串或通道的自定义集合。没有Ranger
接口或类似的东西。如果您想要自定义类型的范围,请考虑使用for
- 循环,如下所示:
for x, eof := col.Next(); x, eof = col.Next(); !eof {
// ...
}
其中Next()
是一个使用如下签名迭代您的集合的方法:
func (*MyCollection) Next() (ItemType x, bool eof)