encoding / csv:我应该在WriteAll()中使用Error()吗?

时间:2017-01-27 13:24:36

标签: csv go

encoding/csv的golang文档中,$pdf->Output("filename.pdf",'D'); WriteAll提供给定的CSV记录,然后在底层作者上调用Write

现在,我很困惑我是否应该通过其返回值或Flush方法检测WriteAll期间的错误。让我解释一下原因。

  • Error()返回Write。这让我觉得我可以根据其返回值来检测错误。
  • error未返回Flush,文档明确说“要检查刷新期间是否发生错误,请调用错误。”
  • error未提及错误处理,但会返回WriteAll,并声明它同时执行errorWrite。文档包含一个这样的例子:

    Flush
  • w := csv.NewWriter(os.Stdout) w.WriteAll(records) // calls Flush internally if err := w.Error(); err != nil { log.Fatalln("error writing csv:", err) } 本身声明:“错误报告在之前的写入或刷新期间发生的任何错误。” (强调我的)。

我查看了代码,看到了一些我不熟悉的恶作剧,所以我把问题转向了。

那是什么呢?我应该查看退回的Error()吗?我应该使用error吗?我应该同时使用吗?有什么不同?

1 个答案:

答案 0 :(得分:0)

据我所见,您可以同时使用两者,我建议使用

中的错误
err := w.WriteAll(records)

这在go中比较常见。

返回的所有错误都来自* bufio.Writer,如果失败则会返回错误。因此,如果w.WriteAll返回错误,则对Error()的调用也将返回错误。