在python中,可以使用xrange方法方便地获取一个整数列表:
for v in xrange(5):
print(v)
输出:
0 1 2 3 4
golang没有原生的xrange方法,不过可以使用golang的channel配合goroutine实现一个xrange方法。
下面是一个简易版的:
func xRangeInt(count int) chan int {
ch := make(chan int)
go func() {
for i := 0; i < count; i++ {
ch <- i
}
close(ch)
}()
return ch
}
完整的xrange可以接受三个参数,xrange(start,stop,step)
。比如
for v in xrange(10,20,2):
print(v)
输出:
10 12 14 16 18
下面完善一下 golang版的 xRangeInt方法:
func xRangeInt(args ...int) chan int {
if l := len(args); l < 1 || l > 3 {
fmt.Println("error args length,xRangeInt requires 1-3 int arguments")
}
var start,stop int
var step int = 1
switch len(args) {
case 1:
stop = args[0]
start = 0
case 2:
start,stop = args[0],args[1]
case 3:
start,step = args[0],args[1],args[2]
}
ch := make(chan int)
go func() {
if step > 0 {
for start < stop {
ch <- start
start = start + step
}
} else {
for start > stop {
ch <- start
start = start + step
}
}
close(ch)
}()
return ch
}
使用xRangeInt:
func main() {
for v := range xRangeInt(20, 10, -3) {
fmt.Println(v)
}
}
原文链接:https://www.f2er.com/go/188270.html