For loop 具有更多变量的范围循环

For loop 具有更多变量的范围循环,for-loop,go,For Loop,Go,简短问题: func parseData(xlFile *xlsx.File, parsed [][]string) [][]string { i := 0 for _, sheet := range xlFile.Sheets { for _, row := range sheet.Rows { parsed = append(parsed, []string{}) for _, cell := range r

简短问题:

func parseData(xlFile *xlsx.File, parsed [][]string) [][]string {
    i := 0

    for _, sheet := range xlFile.Sheets {
        for _, row := range sheet.Rows {
            parsed = append(parsed, []string{})

            for _, cell := range row.Cells {
                parsed[i] = append(parsed[i], cell.String())
            }

            i++
        }
    }

    return parsed
}
有没有办法做到这一点

for i := 0; key, value := range something; i++ {
    ...
}
i := 0

for key, value := range something {
    ...
    i++
}
还是我必须这样做

for i := 0; key, value := range something; i++ {
    ...
}
i := 0

for key, value := range something {
    ...
    i++
}

编辑:问题现实世界原因:

func parseData(xlFile *xlsx.File, parsed [][]string) [][]string {
    i := 0

    for _, sheet := range xlFile.Sheets {
        for _, row := range sheet.Rows {
            parsed = append(parsed, []string{})

            for _, cell := range row.Cells {
                parsed[i] = append(parsed[i], cell.String())
            }

            i++
        }
    }

    return parsed
}

我可以在第三个
中为
内联
I
声明吗?

您只需要在正确的位置声明
var I

func parseData(xlFile *xlsx.File, parsed [][]string) [][]string {

    for _, sheet := range xlFile.Sheets {
        for i, row := range sheet.Rows {
            parsed = append(parsed, []string{})

            for _, cell := range row.Cells {
                parsed[i] = append(parsed[i], cell.String())
            }
        }
    }

    return parsed
}

你可以在这里玩

我不认为你可以把三部分的
风格与一部分的
风格结合起来。。。范围
。对于
,您可以在一个由三部分组成的
中包含多个变量。前者是什么意思?@Flimzy,我正在使用第三方库读取xlsx文件,库中的文档建议使用for…范围,但我需要构建一个二维切片以将其返回到api。在后一个示例中,我使用
I
在正确的位置附加到切片。顺便说一句,这不是我第一次犯这样的错误,但我不记得最后一次了。如果你要附加到一个切片,你不需要索引。-没有比现在更多的迭代。只是更简单,通过使用更合理的操作顺序来消除您的问题。这是一个很好的方法。在有人给出明确的答案之前,我更喜欢这种实现。投票通过。