亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在不使用 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 關注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號