围棋

2017-09-06 71 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不包含这样的功能,所以如果你需要的话,你需要编写自己的(或者找到第三方库)。