Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
始终引用csv值_Csv_Go - Fatal编程技术网

始终引用csv值

始终引用csv值,csv,go,Csv,Go,我想引用CSV文档中的所有字段。有没有办法在不复制所有代码的情况下修改golang的模块?在另一种语言中,我只是从csv.Writer继承并重写,但这在Go中是不可能的,或者是吗?Matt和Volker已经说过,您可以复制并修改模块 您也可以使用Writer包装器,但我认为它有点复杂。 将我的尝试视为概念证明(不使用*) 下面是csv#Writer测试()中应用概念验证的示例: 不使用*请注意,我并没有检查所有情况,例如,如果逗号是否在引用的文本中,那么您需要检查并调整它。 我还建议复制和修改

我想引用CSV文档中的所有字段。有没有办法在不复制所有代码的情况下修改golang的模块?在另一种语言中,我只是从csv.Writer继承并重写,但这在Go中是不可能的,或者是吗?

Matt和Volker已经说过,您可以复制并修改模块

您也可以使用Writer包装器,但我认为它有点复杂。 将我的尝试视为概念证明(不使用*)

下面是csv#Writer测试()中应用概念验证的示例:

不使用*请注意,我并没有检查所有情况,例如,如果逗号是否在引用的文本中,那么您需要检查并调整它。
我还建议复制和修改csv包。

我明白了,这是一个老问题。但我最近也遇到了同样的问题,通过扩展Golang的
编码/csv
,创建了一个小型库
altcsv

如果其他人对此感到疑惑,您可以使用以下库:

它与现有的CSV库向后兼容。我计划在将来添加更多类似python的CSV接口

从CSV文件读取:

fileRdr, _ = os.Open("/tmp/custom_csv_file.txt")
csvRdr := altcsv.NewReader(fileRdr)
content := csvReader.ReadAll()
headers = []string{"hero_name", "alter_ego", "identity"}
fileWtr, _ := os.Create("/tmp/all_quotes_csv_file.txt")
csvWtr := altcsv.NewWriter(csvH)
csvWtr.AllQuotes = true   // surround each field with '"'
csvWtr.Write(headers)
csvWtr.Write([]string{"Spider-Man", "Peter Parker", "Secret Identity"})
csvWtr.Write([]string{"Captain America", "Steven Rogers", "Public Identity"})
csvWtr.Write([]string{"Thor", "Thor Odinson", "No dual Identity"})
csvWtr.Flush()
fileWtr.Close()
写入CSV文件:

fileRdr, _ = os.Open("/tmp/custom_csv_file.txt")
csvRdr := altcsv.NewReader(fileRdr)
content := csvReader.ReadAll()
headers = []string{"hero_name", "alter_ego", "identity"}
fileWtr, _ := os.Create("/tmp/all_quotes_csv_file.txt")
csvWtr := altcsv.NewWriter(csvH)
csvWtr.AllQuotes = true   // surround each field with '"'
csvWtr.Write(headers)
csvWtr.Write([]string{"Spider-Man", "Peter Parker", "Secret Identity"})
csvWtr.Write([]string{"Captain America", "Steven Rogers", "Public Identity"})
csvWtr.Write([]string{"Thor", "Thor Odinson", "No dual Identity"})
csvWtr.Flush()
fileWtr.Close()

至少在Java和Python中,重写的方法将从父类调用。你能制作一个显示其他内容的程序吗?和输出。几乎:例如,没有继承许多其他语言。只需复制代码并将FieldNeedsQuaotes替换为true。非常简单,不需要继承。您不能在Go中“过度使用”方法,也不能将方法添加到在包中定义的结构之外。但是,如果我可以问,为什么要在CSV文件中引用每个值?这不是必需的,而且会使它变得更大,我打赌这就是为什么Go不支持在encoding/csv包中这样做的原因。@Matt好的,那么最好的做法是复制模块?如果是这样,这可能是一个答案。我很清楚引用是不必要的,但我正在为程序输出提供数据的专有软件需要引用。@phihag我想不出比复制软件包并使用自己的软件包更好的方法了。虽然,您可以考虑扩展编码/CSV包来支持诸如“代码> QuoTalalValue<代码>之类的选项,然后将该想法提交给Goover在谷歌群组/谷歌代码上,解释您的情况,并查看它们是否会将其拉入。