范围超过`type x [] struct`或`type y struct`?

时间:2015-01-16 14:48:11

标签: go

似乎没有Ranger接口可用于自定义类型的范围。有类似的东西吗?或者我是否必须创建一个将类型转换为切片或贴图的方法?

编辑:当然我可以将x转换为[] struct,但这样会更难改变x的基础类型。

1 个答案:

答案 0 :(得分:2)

range循环的for变体无法扩展到不仅重命名的切片,地图,字符串或通道的自定义集合。没有Ranger接口或类似的东西。如果您想要自定义类型的范围,请考虑使用for - 循环,如下所示:

for x, eof := col.Next(); x, eof = col.Next(); !eof {
    // ...
}

其中Next()是一个使用如下签名迭代您的集合的方法:

func (*MyCollection) Next() (ItemType x, bool eof)