首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在golang中尝试了2种类型的嵌套循环,但是输出不同。

我在golang中尝试了2种类型的嵌套循环,但是输出不同。
EN

Stack Overflow用户
提问于 2021-03-16 04:39:07
回答 2查看 140关注 0票数 1

我有这个小测验,你应该做一个这样的输出,我在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种风格

第一种风格:

代码语言:javascript
复制
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)
            }
        }
    }

第二种风格:

代码语言:javascript
复制
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++
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-16 06:21:45

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

在使用for i := ...的第一种样式中,每当下一个循环运行时,您都会将值重置为init状态,这意味着它总是将j设置为21,将k设置为11,因此会有许多子循环运行。

相反,第二种风格,您在循环之前先输入值jk。因此,在i的第二个循环中,jk仍然是相同的值,按25和15的顺序排列。

票数 1
EN

Stack Overflow用户

发布于 2021-03-16 06:31:09

有多个选项,以打印输出中的黄金。

fmt.Println在最后追加了一个新行。

fmt.Printf按原样打印内容。

有关更多细节,请阅读文档

代码语言:javascript
复制
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)
            }
        }
    }

输出

代码语言:javascript
复制
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转义序列。

检查正在运行的代码链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66649209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档