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

Range over `type x []struct` or `type y struct`?

似乎没有 Ranger 用于自定义类型范围的接口。有什么类似的吗?或者我是否必须制作一个将类型转换为切片或映射的方法?

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

for 循环的 range 变体不能扩展到自定义集合,这些集合不仅仅是重命名的切片、映射、字符串或通道。没有 Ranger 界面或类似的东西。如果您想覆盖自定义类型,请考虑使用 for 循环,如下所示:

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

其中 Next() 是一种使用如下签名遍历您的集合的方法:

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