围棋
问题描述:
创建具有大间隔的范围切片我想在去片看起来像这样:围棋
[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)
}
但是没有更简单的方法来创建此切片?
答
做同样的方式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不包含这样的功能,所以如果你需要的话,你需要编写自己的(或者找到第三方库)。
Go的哲学是一种极简主义,并且很乐意将简单结构的编码(如range)留给程序员,而不是为语言本身添加复杂/语法糖。这只是他们的设计选择。米洛的回答是一个很好的解决方案。 –