0
我在遍歷通道時將行寫入csv文件時出現問題。我是Go新手,但文件IO的語法與我同步。鑑於我期望寫操作成功返回將表明寫操作已完成,但這不是我所觀察到的。這基本上就是我在我的應用程序已事情是:Go文件在迭代通道時寫入IO失敗
package main
import (
"encoding/csv"
"log"
"os"
)
func main() {
file, err := os.Create("test.csv")
if err != nil {
log.Fatalf("Error opening file: %s", err.Error())
}
defer file.Close()
writer := csv.NewWriter(file)
channel := make(chan []string)
counter := 0
go func() {
defer close(channel)
for i := 0; i < 100; i++ {
channel <- []string{"col1", "col2"}
}
}()
for vals := range channel {
if err := writer.Write(vals); err != nil {
log.Fatalf("Error writing to csv: %s", err.Error())
}
counter++
}
log.Printf("%d lines written", counter)
}
有通過通道進入例行的傳球值,而我遍歷這些值,並將其寫入到一個CSV文件。我沒有得到任何錯誤,最後它記錄了100行已被寫入。
當我檢查CSV文件雖然它是空的。我在我的應用程序中看到的行爲是文件寫入不完整;它會通過寫一條記錄而中途停止。我確定我錯過了一些東西,但是如果寫入沒有錯誤返回,爲什麼文件中沒有任何內容?
感謝隊友。很長一段時間,我的頭靠在牆上。爲什麼它會在我的應用程序中寫入一些文件內容? –
nvm,我在你發佈的鏈接中看到有關緩衝的一點。再次感謝。 –