为了账号安全,请及时绑定邮箱和手机立即绑定

使用 bytes.Buffer 和 csv.writer

使用 bytes.Buffer 和 csv.writer

Go
POPMUISE 2022-07-11 17:14:21
我目前正在尝试在 CSV 中序列化一些字符串切片,而不将输出保存到文件中。我看到了一些使用 bytes.Buffer 的示例,但即使是我最小的测试也不起作用。我不知道如何调试它,代码编译时没有警告,并且在 writer.Flush() 之后不会抛出错误。它还可以正常工作,将结果保存到文件或将其直接通过管道传输到标准输出任何帮助将不胜感激:) 谢谢。PS:最后的打印只是一个测试。我知道我可以使用 csv.NewWriter(os.stdout) 这样做(并且它有效),但它不符合我的需要。我真的很想得到一个字节数组的结果。package mainimport (    "bytes"    "encoding/csv"    "fmt")func main() {    var buffer bytes.Buffer    writer := csv.NewWriter(&buffer)    writer.Write([]string{"1", "2", "3", "4"})    writer.Write([]string{"5", "6", "7", "8"})    defer writer.Flush()    if err := writer.Error(); err != nil {        panic(err)    }    fmt.Println(buffer.Bytes())}
查看完整描述

1 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

您正在推迟 Flush 调用,使其在 fmt.Println 调用之后执行。立即调用 Flush:


package main


import (

    "bytes"

    "encoding/csv"

    "fmt"

)


func main() {

    var buffer bytes.Buffer

    writer := csv.NewWriter(&buffer)

    writer.Write([]string{"1", "2", "3", "4"})

    writer.Write([]string{"5", "6", "7", "8"})


    writer.Flush()

    if err := writer.Error(); err != nil {

        panic(err)

    }

    fmt.Println(buffer.String())

}

https://play.golang.org/p/BHTyfsuf0tY


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号