Loops golang中的无限循环
我是刚来Golang的新手,但我希望不会有像这样基本的问题Loops golang中的无限循环,loops,go,Loops,Go,我是刚来Golang的新手,但我希望不会有像这样基本的问题 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\n", top) fmt.Printf
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\n", top)
fmt.Printf("s = %+v\n", s)
fmt.Printf("len(s) = %+v\n", len(s))
}
}
此命令不退出,只是打印
len(s) = 0
top = 1
s = []
len(s) = 0
top = 1
s = []
len(s) = ^C
我觉得这令人震惊;我做错了什么?在语法上,基于,一切似乎都正常。当您使用
:=
时,您声明了新的变量。在循环内部创建一个与循环外部的s
无关的s
。改为分配:
for len(s) != 0 {
j := len(s) - 1
var top int
top, s = s[j], s[:j]
fmt.Printf("top = %+v\n", top)
fmt.Printf("s = %+v\n", s)
fmt.Printf("len(s) = %+v\n", len(s))
}
适用于len(s)!=0 {
j:=len(s)-1
var top int
顶部,s=s[j],s[:j]
fmt.Printf(“顶部=%+v\n”,顶部)
fmt.Printf(“s=%+v\n”,s)
fmt.Printf(“len(s)=%+v\n”,len(s))
}
(在撰写本文时,这是)@YvetteColomb:我知道它是重复的,但想用一个更完整的代码示例进行解释。我的印象是,:=
足够聪明,在一个元组中一个条目已经在作用域中的情况下,不会重新声明作用域中已经存在的变量。显然我错了。离开这个问题,若你们想打破无限循环,一种方法是使用“os.exit(0)”。希望它能帮助刚接触Golang的用户。