已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
9小时前关闭。
Improve this question
我正在处理一个函数如下:
func extractKeyValuePairs(taskFilePathList []string) []KeyValue {
keyValueList := []KeyValue{}
log.Printf("%v", taskFilePathList)
for _, fileName := range taskFilePathList {
file, err := os.Open(fileName)
if err != nil {
log.Fatal(err)
}
dec := json.NewDecoder(file)
for {
var kv KeyValue
err := dec.Decode(&kv)
if err != nil {
file.Close()
break
}
keyValueList = append(keyValueList, kv)
}
}
return keyValueList
}
但是,当这个函数运行时,它永远不会返回。我把print语句放在这些循环中,结果是,这个函数会解码所有文件中的所有字符对,并把它附加到keyValueList
中,但是这个循环永远不会退出。有没有人能提供一些线索,为什么它永远不会回来?
1条答案
按热度按时间yyhrrdl81#
看起来你的代码陷入了一个无限循环,因为你在解码每个文件后都没有跳出外循环。内部循环继续从文件中阅读,直到出现错误,但是当没有更多的项需要解码时,它不会退出外部循环。
要解决这个问题,您可以添加一个条件,以便在没有更多项需要解码时中断外部循环。
请尝试以下代码
}