将结构写入 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 文件 的相关文章

随机推荐

  • 在不更改单元格格式或宽度的情况下防止井号 (#) 显示在 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