作为Go脚本的一部分,我一直在努力,我想从多个Go例程中写入CSV文件,但是意识到内置的CSV Writer不是线程安全的。
我第一次写入CSV文件的尝试如下所示:
package main
import (
"encoding/csv"
"os"
"log"
"strconv"
)
func main() {
csvFile, err := os.Create("/tmp/foo.csv")
if err != nil {
log.Panic(err)
}
w := csv.NewWriter(csvFile)
w.Write([]string{"id1","id2","id3"})
count := 100
done := make(chan bool, count)
for i := 0; i < count; i++ {
go func(i int) {
w.Write([]string {strconv.Itoa(i), strconv.Itoa(i), strconv.Itoa(i)})
done <- true
}(i)
}
for i:=0; i < count; i++ {
<- done
}
w.Flush()
}
包main import(“ encoding / csv”“ os”“ log”“ strconv”)func main&#x