2013-07-24 101 views
3

有沒有辦法在Go中創建任意類型的range?例如,Python提供了__iter__(),這非常有用。我試圖尋找答案,但沒有結果。任意類型的範圍

回答

3

你已經搜索成功,沒有支持圍繞任意類型的Go。

specs

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

被稱爲範圍表達的「範圍」子句中右邊的表達,這可能是一個數組,指向數組的指針,切片,字符串,地圖或允許接收操作的頻道。

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() 
...