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



我有这个测试,你应该做出这样的输出,我在youtube教程中搜索"对于golang";并解释了它在戈兰有两种风格,

121111213142211121314231112131424111213142.21111213142211121314231112131424111213143.21111213142211121314231112131424111213144.21111213142211121314231112131424111213145.2111121314221112131423111213142411121314

它应该是垂直输出的,而不是水平输出的,所以我构建了3个变量,i=1,j=21,k=11,我使用它来自动增加值,第一个样式有效,但第二个样式不知何故有不同的

yt视频: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 := ...的第一种样式中,每当运行下一个循环时,都会将值重置为init状态,这意味着它总是将j设置为21,将k设置为11。所以会有很多次循环运行。

相反,在第二种样式中,在循环之前初始化值jk。因此,在i的第二个循环中,jk仍然是相同的值,按顺序为25和15。

有多个选项可以在golang中打印输出。

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

有关更多详细信息,请阅读文档。

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转义序列。

检查正在运行的代码链接

最新更新