登录
首页 >  Golang >  Go问答

golang如何跳出读取循环模式?

来源:stackoverflow

时间:2024-02-15 16:18:21 458浏览 收藏

你在学习Golang相关的知识吗?本文《golang如何跳出读取循环模式?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我正在使用golang语言。现在我有一个 udp 套接字。我启动一个 goroutine 来接收服务器返回的信息。 goroutine中运行的代码如下:

func (udp_client *UDPClient) recvFrom() {
    var conns = *udp_client.conn
    var err error

    for {
        readBuff := make([]byte, recvBufferSize)
        _, err = conns.Read(readBuff)
        if err != nil {
            // boomer.RecordFailure("UDP", "RECV", 0.0, err.Error())
            log.Error("socket recv error.", zap.String("errMsg", err.Error()))
            return
        }

        udp_client.recvMessage <- readBuff
    }
}

如何关闭这个 goroutine。

我试图从外部关闭socket,让goroutine中的程序退出,但似乎不起作用。 goroutine中的程序似乎卡住了。

感谢您的阅读。英语不是我的母语。请原谅我的语法错误。

期待您的回复,谢谢!


正确答案


我不确定您在寻找什么,但循环的结束完全取决于您。您的循环可以继续读取数据,直到它看到一些标志(计时器或关闭消息)以自行关闭。如果您询问如何关闭它,请使用 conn.Close()。

最好加上延迟语句,例如:defer conn.Close()。

到这里,我们也就讲完了《golang如何跳出读取循环模式?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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