在 for-range 循环中调用 break 时如何获取索引?

代码:


arr := []string{"A", "B", "C", "D"}


i := 0


for i, s := range arr {

    fmt.Println(i, s)

    if s == "C" {

        break

    }

}


fmt.Println(i)

输出:


0 A

1 B

2 C

0

预期的:


0 A

1 B

2 C

2

我期待我可以在 for-range 之外访问“i”,因为它是事先初始化的。可能与我缺少的变量范围有关,如果是这样,如何实现我的期望?


*注意:我是golang的新手。


开心每一天1111
浏览 67回答 1
1回答

aluckdog

您正在i循环内重新声明变量。请参阅声明和范围,特别是短变量声明。您可以访问循环内部和外部的变量,只要您在外部范围内声明它们(https://go.dev/play/p/Q3OJ0mUZJH-)arr := []string{"A", "B", "C", "D"}i := 0s := ""for i, s = range arr {    fmt.Println(i, s)    if s == "C" {        break    }}fmt.Println(i)
打开App,查看更多内容
随时随地看视频慕课网APP