将结构写入 csv 文件

2024-03-08

将结构转储到提供的 csv 文件中的惯用 golang 方法是什么?我位于一个 func 中,其中我的结构作为 interface{} 传递:

func decode_and_csv(my_response *http.Response, my_struct interface{})

为什么要使用接口{}? - 从 JSON 读取数据,可能会返回一些不同的结构,因此尝试编写一个足够通用的函数。

我的类型的一个例子:

type Location []struct {
    Name                   string `json: "Name"`
    Region                 string `json: "Region"`
    Type                   string `json: "Type"`
}

如果您使用具体类型会容易得多。您可能想要使用encoding/csv包,这是一个相关的例子;https://golang.org/pkg/encoding/csv/#example_Writer https://golang.org/pkg/encoding/csv/#example_Writer

如您所见,Write方法期待一个[]string因此,为了生成它,您必须 1)提供辅助方法或 2)反映my_struct。就我个人而言,我更喜欢第一种方法,但这取决于您的需求。如果你想走第二条路,你可以获取结构体上的所有字段,并将它们用作列标题,然后迭代字段获取每个字段的值,使用append在该循环中将它们添加到[]string然后将其传递给Write在循环的外侧。

对于第一个选项,我会定义一个ToSlice或者每种类型的东西,然后我会创建一个接口来调用它CsvAble这需要ToSlice方法。更改方法中的类型my_struct CsvAble而不是使用空接口,然后你可以调用ToSlice on my_struct并将返回值传递给Write。您也可以返回列标题(这意味着您会得到一个[][]string并且需要迭代通过每个的外部维度[]string into Write)或者您可能需要另一种方法来满足接口,例如GetHeaders返回一个[]string这是列标题。如果是这种情况,您的代码将类似于:

w := csv.NewWriter(os.Stdout)
headers := my_struct.GetHeaders()
values := my_struct.ToSlice()
if err := w.Write(headers); err != nil {
    //write failed do something
}
if err := w.Write(values); err != nil {
    //write failed do something
}

如果这没有意义,请告诉我,我可以跟进这两种方法中任何一种的代码示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将结构写入 csv 文件 的相关文章

  • 将对象列表写入 csv 文件

    我正在编写一个 python 程序 该程序循环遍历 reddit 提交 提取数据并将其作为对象存储在列表中 但是 我无法将该列表写入 csv 文件 文件已创建 但它只是为对象提供某种 id 标记 我应该如何更改 csv 代码 Code im
  • vscode 中的调试不会在断点处停止,调试器启动时显示“无法找到文件...”

    乌班图 vscode 1 62 1 去1 17 3 vscode go 扩展 v0 29 0 深入研究 v1 7 1 我是 vscode 和 Go 的新手 我有多年在 Eclipse 中调试 Java 应用程序的经验 我构建了一个小型多模块
  • Python + Pandas + dataframe:无法将一个数据帧附加到另一个数据帧

    我有两个大的 CSV 文件 我已将它们转换为 Pandas 数据框 它们都有相同名称和相同顺序的列 event name category category id description 我想将一个数据帧附加到另一个数据帧 最后想将生成的数
  • 使用 Ruby CSV 在第 1 行中进行非法引用

    我收到此错误 Illegal quoting in line 1 CSV MalformedCSVError 我的文件中的第 1 行如下 Status Internal ID Language Created At Updated At I
  • 带有制表符分隔文本文件的 StreamReader

    我对这篇文章有类似的要求 使用文本文件在运行时填充 Gridview https stackoverflow com questions 13971165 populate gridview at runtime using textfil
  • 如何在 Go 中表示可选字符串?

    我希望建模一个可以有两种可能形式的值 不存在或字符串 执行此操作的自然方法是Maybe String or Optional
  • 如何在 Goji (Golang) 中使用不同的中间件创建单独的路由组?

    我正在使用Goji https github com zenazn goji https github com zenazn goji 并希望定义具有自己的中间件的路由组 例如 下面的所有路径 company应使用 LDAP 身份验证并定义
  • 共享来自单独命令/进程的属性

    我提供带有多个命令和子命令的命令行工具 我使用cobra https github com spf13 cobra命令行 我有两个单独的命令首先是前提条件e 给其他人 例如第一个命令是通过创建临时文件夹并验证某些文件来首选环境 第二个命令应
  • 如何使用 PowerShell 将多个文本文件的列合并到一个 csv 文件中?

    我有多个测量文件 每个文件包含一列数字数据 Update 该脚本应该适用于可变数量的测量文件 数据1 dat 1 0 2 0 3 0 数据2 dat 10 0 20 0 30 0 数据N dat 1 1 1 如何使用以下命令将这些数据文件合
  • 是否支持动态变量?

    我想知道Go中是否可以动态创建变量 我在下面提供了一个伪代码来说明我的意思 我将新创建的变量存储在切片中 func method slice make type for i 0 i lt 10 i var variable i i slic
  • 在 Internet Explorer 中离线(客户端)创建 csv 文件

    有没有办法使用纯 JavaScript 离线 本地 创建 CSV 文件并将该文件下载到本地文件系统 该方法应该适用于 IE9 或更低版本 我尝试过downloadify 但跨域问题使我无法在本地使用它 我还尝试创建 Base64 编码字符串
  • 为什么 Response.Write() 无法将 CSV 文件导出到浏览器?

    我正在尝试将 DataTable 的内容作为 Excel csv 文件导出到用户的浏览器 当我单击 导出 按钮并在调试器中单步执行代码时 一切看起来都在发生 但实际上没有文件发送到浏览器 问题是 我在另一个项目中使用了这个完全相同的代码 并
  • Golang 基础知识 struct 和 new() 关键字

    我正在学习 golang 当我阅读描述结构的章节时 我遇到了初始化结构的不同方法 p1 passport var p2 passport p3 passport Photo make byte 0 0 Name Scott Surname
  • MySQL 导入 125000 行 CSV 的最快方法?

    这是我第一次使用 MySQL 除了对现有数据库进行一些基本查询之外 所以我不擅长解决这个问题 我有一个包含 125 000 条记录的 CSV 我想将其加载到 MySQL 中 我安装了版本 8 和工作台 我使用导入向导加载 CSV 它开始导入
  • 如何在C#中执行Go函数

    有没有办法从 C 执行 Go 函数 例如 对于 Python 我会使用 Ironpython 我知道我可以生成一个进程来执行 Go 脚本 但如果可能的话 我真的不想回退到这样的解决方案 Google 搜索没有显示任何内容 那么有什么方法可以
  • 在golang中获取TTFB(第一个字节的时间)值

    我正在尝试获取 TTFB 值和 Connect 值 c exec Command curl w Connect time connect TTFB time starttransfer Total time time total o dev
  • 如何在 Golang 中将 []byte XML 转换为 JSON 输出

    有没有办法在 Golang 中将 XML byte 转换为 JSON 输出 我有以下功能body is byte但我想在一些操作之后将此 XML 响应转换为 JSON 我试过了Unmarshal in xml打包没有成功 POST func
  • 使用 fgetcsv 循环遍历 csv

    我有一个包含 3 列的 csv 文件 电子邮件地址 名 and 姓 我已经到了可以使用以下代码打印数组的阶段 这会打印数组 因此每个字段都在一行中 我希望它打印的只是该行第一列中的值 这是如何完成的 关于 fgetcsv 的文档对我 相对初
  • 使用 silverlight 4 和 c# 创建 CSV 下载

    我正在努力寻找示例或代码 以便能够在 silverlight 中创建 CSV 或文本文件作为可下载链接 我已经在 ASP net 中完成了此操作 但无法找到使用 Silverlight 的方法 我在旋转轮子吗 或者我应该创建一个 ASP 页
  • 使用 OpenTelemetry 统一不同服务的范围

    我刚刚开始使用 OpenTelemetry 并为此创建了两个 微 服务 Standard and GeoMap 最终用户将请求发送到Standard服务 该服务又将请求发送到GeoMap在将结果返回给最终用户之前获取信息 我使用 gRPC

随机推荐

  • 在不更改单元格格式或宽度的情况下防止井号 (#) 显示在 Excel 中

    我有以下 Excel VBA 代码 Sheet1 Columns ColumnWidth 8 14 Sheet1 Rows EntireRow RowHeight Sheet1 Cells 1 Width Sheet1 Cells Wrap
  • Spring 启动:未找到 JSP (404)

    我正在尝试使用 Spring Boot 创建一个新项目 但我收到如下所述的错误 我已经添加了我的代码 Error HTTP 错误 404 页面未找到 这是我的项目结构的链接 pom xml
  • FOR JSON 路径在 AZURE SQL 上返回较少数量的行

    我正在使用 AZURE SQL SQL Server 2016 并创建一个查询以提供 JSON 对象中的输出 我正在添加FOR JSON PATH在查询结束时 当我执行该过程而不添加FOR JSON PATH对于查询 我得到 244 行 表
  • Selenium Google 登录块

    我的 Google 登录有问题 我想登录我的帐户 但 Google 表示不允许自动化驱动程序登录 我正在寻找解决方案 是否可以获取普通 Firefox Chrome 的 cookie 并将其加载到 ChromeDriver GeckoDri
  • 在 iPhone 中预览圆形图像

    谁能告诉我如何在自定义单元格内创建图像预览 并包含彩信中加载的图像预览 我一直试图通过改变 IB 中的值来做到这一点 但我没能做到 多谢 source iphonehelp in http iphonehelp in content upl
  • 在我使用 liquibase 的所有架构中应用迁移

    我在这个应用程序中使用 spring boot 开发了一个网站 我使用架构多租户来管理我的数据库 我想使用 Liquibase 作为数据库迁移工具 问题是 当我进行迁移时 新的修改 修改意味着通过向不同的表添加新列并添加新表 仅适用于公共模
  • 朴素贝叶斯:训练的每个特征的类内方差必须为正

    当尝试拟合朴素贝叶斯时 training data sample target class K8 train model nb NaiveBayes fit training data target class prediction y n
  • Firebase 邀请显示邀请已发送但尚未收到

    我尝试使用 Firebase 邀请发送邀请 当选择联系人的电子邮件时 Firebase 表示已发送邀请 但从未收到该电子邮件 在控制台上配置 SHA1 证书 返回的错误代码始终为 RESULT OK 并且从 AppInviteInvitat
  • SQLBulkCopy 与目标表中的标识插入

    我正在尝试使用 SQLBulkCopy 将通用列表插入到 SQL Server 我在身份字段方面遇到了麻烦 我希望我的目标表生成身份字段 我该怎么处理这个问题 这是我的代码 using var bulkCopy new SqlBulkCop
  • 如果我的日期在字符串中,如何在 Python 中对这个列表进行排序?

    date 2010 04 01 people 1047 hits 4522 date 2010 04 03 people 617 hits 2582 date 2010 04 02 people 736 hits 3277 假设我有这个清单
  • 如何向Android手机发送AT指令?

    我有 2 部 Android 手机通过蓝牙相互连接 并且能够使用 BluetoothChat 示例 使用输入 输出流 在它们之间进行通信 我还可以使用以下功能在这些手机之间建立蓝牙连接HandsFreeProfile通过使用以下UUID用于
  • 使用 Protobuf-net 的端点行为配置 WCF

    我有一个 WCF 服务 NET 4 它公开 4 个端点 其中一个端点配置有 protobuf net V1 0 0 280 行为扩展 然而 我注意到 protobuf net 行为会启动ALL定义的端点 包括未配置 protbuf net
  • 如何降级或安装特定版本的 Composer?

    我在正在设置的项目中收到以下错误 您正在使用 Composer 2 您的某些插件似乎与它不兼容 确保更新您的插件或报告插件问题以要求他们支持 Composer 2 本周我开始在一家新公司工作 只是想安装他们的项目 但似乎没有办法更改我在 W
  • 如何使用 selenium 验证 target="_blank" 链接?

    我们页面上的某些链接使用 target blank 在新窗口中打开 如何让 selenium 查看正确的窗口 以便我可以验证该页面是否链接到正确的页面 这是我一直在尝试的 open page click link Find us on Fa
  • 防止 Android Fragment 在设备旋转上重新创建

    问题 当我旋转设备时 应用程序中片段中包含的信息将被重新加载 由于该应用程序从互联网上获取信息 这意味着在重新收集数据时一段时间内会缺乏数据 我尝试过的 我读过很多文章和 S O 问题 它们给出了一些一般性的指导 并尝试了他们的解决方案 来
  • 动态链接域不可用

    根据文档 我的项目应该有一个动态链接域 它显示在动态链接页面的顶部 该文档有一个屏幕截图 如下所示 根据 Firebase 文档的域位置 https i stack imgur com 7P2Xd png 然而 在我的项目的动态链接页面上没
  • Java 程序无法运行并抛出有关类的错误

    所以我想运行我刚刚编译的 Start class 文件 它是我从 Start java 编译的 问题是它会抛出这个错误 java Start Exception in thread main java lang NoClassDefFoun
  • 在同步方法中使用 Task.Run() 以避免异步方法等待死锁?

    UPDATE这个问题的目的是为了得到一个简单的答案Task Run 和僵局 我非常理解不混合异步和同步的理论推理 并且我将它们牢记在心 我并不排斥从别人那里学习新东西 只要有可能 我都会尽力做到这一点 有时 一个人需要的只是技术答案 我有一
  • CFLAGS、CCFLAGS、CXXFLAGS - 这些变量到底控制什么?

    我正在使用 GNU make 编译我的 C 代码 我想了解如何使我的编译可定制 我在不同的地方读到CFLAGS CCFLAGS and CXXFLAGS用于此目的 那么我应该如何使用它们呢 如果我有额外的命令行参数给编译器 我应该将它们附加
  • 将结构写入 csv 文件

    将结构转储到提供的 csv 文件中的惯用 golang 方法是什么 我位于一个 func 中 其中我的结构作为 interface 传递 func decode and csv my response http Response my st