圍棋

2017-09-06 101 views
-2

創建具有大間隔的範圍切片我想在去片看起來像這樣:圍棋

[100, 200, 300, 400, 500] 

在Python我這樣做:

l = range(100, 600, 100) 

我知道我可以在Go中執行此操作:

l := []int{} 
for i:=100; i<600; i+=100{ 
    l = append(l, i) 
} 

但是沒有更簡單的方法來創建此切片?

+3

Go的哲學是一種極簡主義,並且很樂意將簡單結構的編碼(如range)留給程序員,而不是爲語言本身添加複雜/語法糖。這只是他們的設計選擇。米洛的回答是一個很好的解決方案。 –

回答

3

做同樣的方式Python做:

func pyrange(start, end, step int) []int { 
    // TODO: Error checking to make sure parameters are all valid, 
    // else you could get divide by zero in make and other errors. 

    rtn := make([]int, 0, (end-start)/step) 
    for i := start; i < end; i += step { 
     rtn = append(rtn, i) 
    } 
    return rtn 
} 

隨着功能。

顯然只有經常這樣做才值得。默認情況下,Go不包含這樣的功能,所以如果你需要的話,你需要編寫自己的(或者找到第三方庫)。