【发布时间】:2020-06-14 06:14:30
【问题描述】:
以下代码抛出slice bounds out of range 错误。
func main() {
file, err := os.Open("mails.mbox")
if err != nil {
log.Fatal(err)
}
defer file.Close()
m := mbox.NewReader(file) // bufio.NewScanner(file)
for {
data, err := m.NextMessage() // .Scan()
if err == io.EOF {
break
} else if err != nil {
log.Fatalf("Unexpected error after NextMessage(): %v", err)
}
go saveMessage(data)
}
// By now we should not have any messages inside.
if _, err := m.NextMessage(); err != io.EOF {
log.Fatalf("We still have data: %v", err)
}
}
func saveMessage(data io.Reader) {
msg, err := mail.ReadMessage(data)
if err != nil {
return
}
// insert msg into database
}
我想同时处理saveMessage 函数。
一次 100 个或基于可用内存。
【问题讨论】:
-
请更具体一些。有什么错误?可以发一下吗?
标签: go concurrency goroutine