我有这个小测验,你应该做一个这样的输出,我在youtube的教程中搜索"for golang“,它解释说它有2种”in golang“的风格,
1 21 11 12 13 13 14 22 11 12 14 14 14 12 12 13 11 11 12 11 11 11 13 13 13 12
它应该是垂直输出的,而不是水平的,所以我构建了3个变量,i= 1,j= 21和k= 11,我用它来自动增加值,第一种样式工作,但是第二种样式在某种程度上不同。
yt: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++
}
}
}发布于 2021-03-16 06:21:45
这不是关于语法,而是关于你的逻辑。
在使用for i := ...的第一种样式中,每当下一个循环运行时,您都会将值重置为init状态,这意味着它总是将j设置为21,将k设置为11,因此会有许多子循环运行。
相反,第二种风格,您在循环之前先输入值j和k。因此,在i的第二个循环中,j和k仍然是相同的值,按25和15的顺序排列。
发布于 2021-03-16 06:31:09
有多个选项,以打印输出中的黄金。
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转义序列。
检查正在运行的代码链接
https://stackoverflow.com/questions/66649209
复制相似问题