我的 Go 代码中有非常奇怪的行为。总的要点是,当我有
for {
if messagesRecieved == l {
break
}
select {
case result := <-results:
newWords[result.index] = result.word
messagesRecieved += 1
default:
// fmt.Printf("messagesRecieved: %v\n", messagesRecieved)
if i != l {
request := Request{word: words[i], index: i, thesaurus_word: results}
requests <- request
i += 1
}
}
}
程序冻结并且无法前进,但是当我取消注释 fmt.Printf 命令时,程序运行正常。您可以在此处查看整个代码。有谁知道是什么导致了这种行为?