我在 golang 中尝试了 2 种嵌套循环,但它有不同的输出

i tried 2 style of nested loop in golang, but it has different output

我有这个测验,你应该做出这样的输出,我在 youtube 教程中搜索“for golang”,它解释说它在 golang 中有 2 种 for,

1 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14 2个 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14 3个 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14 4个 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14 5个 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14

应该是垂直输出,不是水平输出,所以我建了3个变量,i = 1,j = 21,k = 11,用for自动增加值,第一种可以,但是第二种风格有点不同

yt vid : https://www.youtube.com/watch?v=jZ-llP_yKNo 在 5:28 分钟他解释说有 2 种风格

第一种风格:

for i:=1; i <= 5; i++{
        fmt.Println(i)
        for j:=21; j <= 24; j++ {
            println(j)
            for k:=11; k<=14; k++ {
                fmt.Println(k)
            }
        }
    }

第二种风格:

i:=1
j:=21
k:=11

for i <= 5{
    fmt.Println(i)
    i++
    for j <= 24 {
        println(j)
        j++
        for k<=14 {
            fmt.Println(k)
            k++
        }
    }
}

这不是关于语法,而是关于你的逻辑。

for i := ... 的第一种样式中,每当下一个循环 运行 时,您将值重置为初始状态,这意味着它总是将 j 设置为 21 和 k到11。所以会有很多子循环运行s.

相比之下,第二种风格,你在循环之前初始化值 jk。所以在 i 的第二个循环中,jk 仍然是相同的值,顺序为 25 和 15。

在 golang 中有多种打印输出的选项。

fmt.Println 在末尾追加一个新行。
fmt.Printf 按原样打印内容。

有关详细信息,请阅读 documentation

for i := 1; i <= 5; i++ {
        fmt.Printf("%v ", i)
        for j := 21; j <= 24; j++ {
            fmt.Printf("%v ", j)
            for k := 11; k <= 14; k++ {
                fmt.Printf("%v ", k)
            }
        }
    }

输出

1 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14 2 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14 3 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14 4 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14 5 21 11 12 13 14 22 11 12 13 14 23 11 12 13 14 24 11 12 13 14 

要添加新行,请使用 \n 转义序列。

检查运行代码link