范围超过任意类型

时间:2013-07-24 11:53:22

标签: iterator go range

有没有办法在Go中创建任意类型range?例如,Python提供__iter__(),这非常有用。我试着寻找答案,但没有结果。

2 个答案:

答案 0 :(得分:3)

您已成功搜索,在Go中不支持任意类型的范围。

来自specs

RangeClause = ( ExpressionList "=" | IdentifierList ":=" ) "range" Expression .
  

“range”子句右侧的表达式称为范围表达式,它可以是数组,指向允许接收操作的数组,切片,字符串,映射或通道的指针。

答案 1 :(得分:2)

您可以使用频道来模拟它。

的内容
func (t *SomeType) Range() chan *Item {
    // setup a channel and a go routine that sends the items from t
}

for item := range t.Range() 
...