3

range有没有办法在 Go中制作任意类型?例如,Python 提供了__iter__(),它非常有用。我尝试寻找答案,但没有得到任何结果。

4

2 回答 2

3

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

规格

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

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

于 2013-07-24T11:56:19.577 回答
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() 
...
于 2013-07-25T22:00:24.587 回答