gpt4 book ai didi

loops - 死循环——迭代,函数返回true

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:01 27 4
gpt4 key购买 nike

我有问题。我需要让一个程序在后台运行。该程序用于收集数据并将其保存在我的数据库中。

我开始这样做了:

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”函数的迭代是否有序?

最佳答案

是的,doAll 的迭代将按顺序进行,因为 c channel 是无缓冲的。这意味着在您的 for rows.Next() 循环中,从 c 的读取将等到 doOne 写入 channel 。

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

关于loops - 死循环——迭代,函数返回true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26334428/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com