我正在尝试使用 Go 中的 tabwriter 包在文件中写入制表符分隔值。
records map[string] []string
file, err := os.OpenFile(some_file, os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Println(err)
}
w := new(tabwriter.Writer)
w.Init(file, 0, 4, 0, '\t', 0)
for _, v := range records {
fmt.Fprintln(w, v[0],"\t",v[1],"\t",v[2],"\t",v[3])
w.Flush()
}
我面临的问题是写入文件的记录前面有两个额外的空格。我添加了调试标志,这是我在文件中得到的:
fname1 | mname1 | lname1 | age1
fname2 | mname2 | lname2 | age2
我看不出哪里出错了。任何帮助表示赞赏。
最佳答案
正如 SirDarius 建议的那样, encoding/csv 确实是正确的选择。您所要做的就是将逗号设置为水平制表符,而不是默认值,不出所料,默认值是逗号。
package tabulatorseparatedvalues
import (
"encoding/csv"
"io"
)
func NewWriter(w io.Writer) (writer *csv.Writer) {
writer = csv.NewWriter(w)
writer.Comma = '\t'
return
}
关于csv - 在 Go 中编写制表符分隔值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35778958/