csv - 将 map 写入 csv

标签 csv go

我一直在尝试弄清楚如何正确地将 map 写入 csv 文件,但不幸的是。

我基本上有一个查询 sql 数据库的程序,我将其中一个返回值存储为映射的键,然后将一段字符串存储与其相关的数据,例如,映射将是:

var m = make(map[string][]string)

m['test1'] = [5, 4, 3]

所以将其写入 csv 将是

test1, 5, 4, 3

它像列表/slice 一样打印到 csv,我将它存储在 map 中,以便更容易在别处构建动态查询。

我曾尝试使用这样的 for 循环:

for key, value := range m{
    writer.Write(key)
    writer.Write(value)
}

但我收到以下错误:

cannot use key (type string) as type []string in argument to writer.Write

我在这里进行了大量的谷歌搜索和搜索,但似乎无法找到正确执行此操作的方法。

最佳答案

Package csv

func (*Writer) Write

func (w *Writer) Write(record []string) error

Writer writes a single CSV record to w along with any necessary quoting. A record is a slice of strings with each string being one field.


error: cannot use key (type string) as type []string in argument to writer.Write


"I've done a lot of googling and searching here."

要解决这个问题,请阅读Write的文档并按照错误消息中的说明进行操作,您有类型stringWrite想要输入[]字符串。例如,

for key, value := range m {
    r := make([]string, 0, 1+len(value))
    r = append(r, key)
    r = append(r, value...)
    err := writer.Write(r)
    if err != nil {
        // handle error
    }
}
writer.Flush()

关于csv - 将 map 写入 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47517270/

相关文章:

python - if语句后继续读入文件

go - 将反射值转换到 golang 中?

golang 竞争条件 - 在 2 个 goroutines 中编码为 XML

google-app-engine - Google App Engine Golang 没有这样的文件或目录

Python:写入 csv header "with open"

python - 将大量 csv 文件导入 PostgreSQL 数据库的有效方法

mysql - 尝试导入 CSV 文件时数据被截断

arrays - slice 可以引用不同索引范围中的差异数组/slice ,还是有方便的解决方法?

go - LinkError : WebAssembly. instantiate(): Import #1 module ="go"function ="runtime.resetMemoryDataView"error: function import requires a callable

java - 我是否必须将 csv 值加载到 Java Web 应用程序的数据库中