golang实现python xrange方法

xiaoxiao2021-02-28  110

在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, stop, 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.6miu.com/read-28481.html

最新回复(0)