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