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

是否可以在不使用“for”语句的情况下迭代 golang 数组/切片?


神不在的星期二
浏览 170回答 3
3回答

长风秋雁

您可以使用goto语句(不推荐)。package mainimport (&nbsp; &nbsp; "fmt")func main() {&nbsp; &nbsp; my_slice := []string {"a", "b", "c", "d"}&nbsp; &nbsp; index := 0back:&nbsp; &nbsp; if index < len(my_slice) {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(my_slice[index])&nbsp; &nbsp; &nbsp; &nbsp; index += 1&nbsp; &nbsp; &nbsp; &nbsp; goto back&nbsp; &nbsp; }}

白衣非少年

您可以使用递归函数来迭代切片。尾递归可以防止@vutran 提到的堆栈溢出。package mainimport "fmt"func num(a []string, i int) {&nbsp; &nbsp; if i >= len(a) {&nbsp; &nbsp; &nbsp; &nbsp; return&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(i, a[i]) //0 a 1 b 2 c&nbsp; &nbsp; &nbsp; &nbsp; i += 1&nbsp; &nbsp; &nbsp; &nbsp; num(a, i) //tail recursion&nbsp; &nbsp; }}func main() {&nbsp; &nbsp; a := []string{"a", "b", "c"}&nbsp; &nbsp; i := 0&nbsp; &nbsp; num(a, i)}一个可能更易读但不那么纯粹的例子可以使用匿名函数。参见https://play.golang.org/p/Qen6BKviWuE。

慕姐8265434

Go 没有不同的循环关键字,例如foror&nbsp;while,它只有forwhich 有几种不同的形式
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go