golang实现python xrange方法

来源:互联网 发布:线切割3b编程实例宝剑 编辑:程序博客网 时间:2024/05/22 00:10

在python中,可以使用xrange方法方便地获取一个整数列表:

for v in xrange(5):    print(v)

输出:

01234

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)

输出:

1012141618

下面完善一下 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)    }}
原创粉丝点击