为了账号安全,请及时绑定邮箱和手机立即绑定

在不使用 for 语句的情况下迭代 golang 数组/切片

在不使用 for 语句的情况下迭代 golang 数组/切片

Go
神不在的星期二 2021-11-29 16:35:26
是否可以在不使用“for”语句的情况下迭代 golang 数组/切片?
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

您可以使用goto语句(不推荐)。


package main


import (

    "fmt"

)


func main() {

    my_slice := []string {"a", "b", "c", "d"}


    index := 0


back:

    if index < len(my_slice) {

        fmt.Println(my_slice[index])

        index += 1

        goto back

    }

}


查看完整回答
反对 回复 2021-11-29
?
白衣非少年

TA贡献1155条经验 获得超0个赞

您可以使用递归函数来迭代切片。尾递归可以防止@vutran 提到的堆栈溢出。


package main


import "fmt"


func num(a []string, i int) {

    if i >= len(a) {

        return

    } else {

        fmt.Println(i, a[i]) //0 a 1 b 2 c

        i += 1

        num(a, i) //tail recursion

    }

}


func main() {

    a := []string{"a", "b", "c"}

    i := 0

    num(a, i)

}

一个可能更易读但不那么纯粹的例子可以使用匿名函数。参见https://play.golang.org/p/Qen6BKviWuE。


查看完整回答
反对 回复 2021-11-29
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

Go 没有不同的循环关键字,例如foror while,它只有forwhich 有几种不同的形式


查看完整回答
反对 回复 2021-11-29
  • 3 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信