Golang退出bufio for loop进入另一个for loop
我有一个初始循环,不断询问用户问题,直到用户键入q退出Golang退出bufio for loop进入另一个for loop,go,Go,我有一个初始循环,不断询问用户问题,直到用户键入q退出 func main() { scanner := bufio.NewScanner(os.Stdin) quit := false var city string var anything string for quit == false { fmt.Println("Enter a city name") for scanner.Scan(){ city= scanner.Text(
func main() {
scanner := bufio.NewScanner(os.Stdin)
quit := false
var city string
var anything string
for quit == false {
fmt.Println("Enter a city name")
for scanner.Scan(){
city= scanner.Text()
fmt.Printf("q to quit (Anything else to continue): ")
anything = scanner.Text()
}
if anything == "q" {
fmt.Println(city)
quit = true
}
}
}
我努力想弄清楚的是,如何退出扫描仪的嵌套for循环,并继续初始for循环,直到用户输入q。现在,它不会退出第二个循环,所以它总是提示“q退出…”,当我设置一个中断时,它会退出两个循环
你知道我应该如何解决这个问题吗?很难确切地说出你想要什么,因为你没有向我们提供示例输入和输出。也许,根据您的代码,类似这样的内容:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var cities []string
scanner := bufio.NewScanner(os.Stdin)
for {
fmt.Println("Enter a city name")
if !scanner.Scan() {
break
}
city := scanner.Text()
if len(city) > 0 {
cities = append(cities, city)
}
fmt.Printf("q to quit (Anything else to continue): ")
if !scanner.Scan() || scanner.Text() == "q" {
break
}
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, err)
}
fmt.Printf("%q\n", cities)
}
输出:
Enter a city name
Los Angeles
q to quit (Anything else to continue):
Enter a city name
London
q to quit (Anything else to continue):
Enter a city name
Delhi
q to quit (Anything else to continue): q
["Los Angeles" "London" "Delhi"]
很难准确说出您想要什么,因为您没有向我们提供示例输入和输出。也许,根据您的代码,类似这样的内容:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var cities []string
scanner := bufio.NewScanner(os.Stdin)
for {
fmt.Println("Enter a city name")
if !scanner.Scan() {
break
}
city := scanner.Text()
if len(city) > 0 {
cities = append(cities, city)
}
fmt.Printf("q to quit (Anything else to continue): ")
if !scanner.Scan() || scanner.Text() == "q" {
break
}
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, err)
}
fmt.Printf("%q\n", cities)
}
输出:
Enter a city name
Los Angeles
q to quit (Anything else to continue):
Enter a city name
London
q to quit (Anything else to continue):
Enter a city name
Delhi
q to quit (Anything else to continue): q
["Los Angeles" "London" "Delhi"]
这个代码对我来说毫无意义。为什么if语句在扫描循环之外?它在错误发生之前不会执行。它在外部,因为如果用户不输入q,我希望程序再次要求输入城市名称。我想你误解了扫描仪的工作原理。再次阅读文档。例如,city和anything将具有相同的值,因为Text()的返回值在下次调用Scan之前不会更改。应该只有一个循环。你说得对,谢谢!这个代码对我来说毫无意义。为什么if语句在扫描循环之外?它在错误发生之前不会执行。它在外部,因为如果用户不输入q,我希望程序再次要求输入城市名称。我想你误解了扫描仪的工作原理。再次阅读文档。例如,city和anything将具有相同的值,因为Text()的返回值在下次调用Scan之前不会更改。应该只有一个循环。你说得对,谢谢!