Golang中的无限for循环[重复]



此问题已经存在 在这里有答案</ p>





  • 在Golang中无法识别for循环中变量的使用



    1 回答
    </ span>

    </ li>

    </ ul>

    </ div>

    我是Golang的新手,但我会 </ p>

      package main 
    
    

    import“ fmt”

    func main(){
    s:= make([ ] int,0)
    s = append(s,1)
    for len!= 0 {
    j:= len(s)-1
    top,s:= s [j],s [: j]
    fmt.Printf(“ top =%+ v
    ”,top)
    fmt.Printf(“ s =%+ v
    ”,s)
    fmt.Printf(“ len(s)= %+ v
    “,len(s))
    }
    }
    </ code> </ pre>

    此命令不会退出,它只会退出 打印</ p>

      len(s)= 0 
    top = 1
    s = []
    len(s)= 0
    top = 1
    s = []
    len(s )= ^ C
    </ code> </ pre>

    我觉得这很神奇; 我究竟做错了什么? 从语法上来说,基于 https://tour.golang.org/flowcontrol/3 确定。</ p>
    </ div>

展开原文

原文

This question already has an answer here:

I'm new to Golang, but I would expect not to have issues with something as basic as this.

package main

import "fmt"

func main() {
    s := make([]int, 0)
    s = append(s, 1)
    for len(s) != 0 {
        j := len(s) - 1
        top, s := s[j], s[:j]
        fmt.Printf("top = %+v
", top)
        fmt.Printf("s = %+v
", s)
        fmt.Printf("len(s) = %+v
", len(s))
    }
}

This command doesn't exit, it just prints

len(s) = 0
top = 1
s = []
len(s) = 0
top = 1
s = []
len(s) = ^C

I find this stunning; what am I doing wrong? Syntactically, based on https://tour.golang.org/flowcontrol/3, everything seems OK.

</div>

1个回答



使用:= </ code>时,您声明了新变量。 在循环内部创建与循环外部的 s </ code>不相关的 s </ code>。 改为分配:</ p>

  for len!= 0 {
j:= len(s)-1
var top int
top,s = s [j],s [:j] </ b>
fmt.Printf(“ top =%+ v
”,top)
fmt.Printf(“ s =%+ v
”,s)

fmt.Printf(“ len(s)=%+ v
”,len(s))
} </ code> </ pre>
</ div>

展开原文

原文

When you use :=, you declare new variables. An s is created inside the loop unrelated to the s outside it. Assign instead:

for len(s) != 0 {
    j := len(s) - 1
    var top int
    top, s = s[j], s[:j]
    fmt.Printf("top = %+v
", top)
    fmt.Printf("s = %+v
", s)
    fmt.Printf("len(s) = %+v
", len(s))
}

dpsq8476
dpsq8476 我给人的印象是::=非常聪明,以至在一个元组已经在范围内的元组的情况下,不必重新声明已经在范围内的变量。 显然我错了。
大约 3 年之前 回复
douqi1212
douqi1212 我知道它是重复的,但想给出一个更完整的代码示例进行解释。
大约 3 年之前 回复
doutun9179
doutun9179 (在撰写本文时,这是我关于Go的答案的1/3)
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐