登录
首页 >  Golang >  Go问答

结束执行有用户输入的 For 循环

来源:stackoverflow

时间:2024-02-16 23:54:21 374浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《结束执行有用户输入的 For 循环》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我是 Golang 新手。我试图在 golang 中提供一个退出处理长 for 循环的方法。 for 循环迭代包含 700 多个项目的数组。我想为最终用户提供单击 X 来打破循环的选项。

我尝试了 reader := bufio.NewReader(os.Stdin),但每次进入循环时它都会等待输入。如何确定用户是否按下了按键并退出循环,而不是每次都暂停等待输入?


正确答案


您可以执行如下操作来使用 goroutine 和通道。

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
    "time"
)

func main() {
    stopCh := make(chan bool)

    go func() {
        reader := bufio.NewReader(os.Stdin)
        fmt.Print("Enter text: ")
        text, _ := reader.ReadString('\n')
        if strings.TrimSpace(text) == "stop" {
            stopCh <- true
        }
    }()

loop:
    for {
        select {
        case stop := <-stopCh:
            if stop {
                break loop
            }
        default:
            // long processing

            time.Sleep(10 * time.Second)
        }

    }
}

基本上,您创建一个新的 goroutine 来获取用户的输入,然后将其发送到通道。在主处理循环中。您执行一个选择,它将轮询停止通道并查看是否给出了任何停止命令,如果没有,它将进入默认状态并执行您要求执行的正常工作。否则,如果收到停止命令,则会中断 for 循环。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>