我正在处理一个函数如下:
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条答案
按热度按时间watbbzwu1#
当你使用json解码器时,你应该检查**dec.More()**的返回值,所以你应该把无限循环改为这样: