为了账号安全,请及时绑定邮箱和手机立即绑定

无限循环——迭代,函数返回true

无限循环——迭代,函数返回true

Go
炎炎设计 2021-08-23 15:59:53
我有疑问。我需要制作一个在后台运行的程序。该程序是在我的数据库中收集和保存数据。我开始这样做:func main() {   for {      doAll()   }}并且一次从所有地址检索数据(“go”函数):func doAll() {   rows, err := MySQL.QueryRow("SELECT * FROM `settings`")   checkError(err)   defer rows.Close()   for rows.Next() {      c := make(chan bool)      var http string      err = rows.Scan(&http )      checkError(err)      go doOne(http)      <- c   }}这会从一个网站检索数据。func doOne() {   // some code   c <- true}我的问题是“doAll”函数的迭代是否有序?
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

是的,迭代doAll将是有序的,因为c通道是无缓冲的。这意味着在您的for rows.Next()循环中,读取c将等待直到doOne写入通道。

您可以通过删除通道并doOne同步执行来简化此代码(即:只需将其作为函数调用)。以这种方式重构的代码具有完全相同的语义。


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信