gpt4 book ai didi

csv - 编码/csv : Should I use Error() with WriteAll()?

转载 作者:数据小太阳 更新时间:2023-10-29 03:25:55 24 4
gpt4 key购买 nike

在 golang 文档中 encoding/csv , WriteAll 被声明为 Write 给定的 CSV 记录,然后在底层编写器上调用 Flush

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

  • Write 返回error。这让我觉得我可以根据它的返回值来检测错误。
  • Flush 不返回 error,文档明确指出“要检查 Flush 期间是否发生错误,请调用 Error。”
  • WriteAll 没有提及错误处理,但它返回 error,并声明它执行 WriteFlush 。该文档包括一个这样的示例:

    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 报告在之前的Write 或 Flush 期间发生的任何错误。” (强调我的)。

我查看了代码,发现了一些我不熟悉的恶作剧,所以我将问题转向 SO。

那是什么?我应该查看返回的 error 吗?我应该使用 w.Error() 吗?我应该同时使用两者吗?有什么不同?

最佳答案

据我所知,您可以同时使用两者,我建议使用来自

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

这在go中比较常见。

所有返回的错误都来自 *bufio.Writer,如果它失败,它总是会返回一个错误。因此,如果 w.WriteAll 返回一个错误,调用 Error() 也会返回一个错误。

关于csv - 编码/csv : Should I use Error() with WriteAll()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41895016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com