有没有办法range在 Go 中创建任意类型?例如,Python 提供了__iter__(),这真的很有用。我试图寻找答案,但没有得到任何结果。
LEATH
浏览 218回答 2
2回答
繁花不似锦
您已成功搜索,在 Go 中不支持覆盖任意类型。从规格:RangeClause = ( ExpressionList "=" | IdentifierList ":=" ) "range" Expression .“范围”子句中右侧的表达式称为范围表达式,它可以是数组、指向数组的指针、切片、字符串、映射或允许接收操作的通道。
您可以使用通道来模拟它。类似的东西func (t *SomeType) Range() chan *Item { // setup a channel and a go routine that sends the items from t}for item := range t.Range() ...