范围超过 `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)
似乎没有 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)