登录
首页 >  Golang >  Go问答

转换结构体中包含获取CSV数据接口和范围信息的方式

来源:stackoverflow

时间:2024-03-03 21:42:27 366浏览 收藏

本篇文章向大家介绍《转换结构体中包含获取CSV数据接口和范围信息的方式》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

情况是我在结构中有一个接口,现在我必须调整该数据以获得 csv 格式。 这是支柱和界面

paginatedlistresponsedatarec struct {
totaldbreccnt  int         `json:"totalrecords"`    // total number of records exists in the database.
filteredreccnt int         `json:"filteredrecords"` // number of records filtered based on the search criteria
reclist        interface{} `json:"records"`         // list of filtered records
todaydbreccnt  int         `json:"todayrecords"`}

现在这个结构体 reclist 包含我想以 csv 格式显示的数据。

issuccess, responsedata := dbaccess.getjoblist(reqfilterrec, clientid)

这里的responsedata是paginatedlistresponsedatarec结构的类型

v := reflect.valueof(responsedata.reclist)
values := make([]interface{}, v.numfield())

for i := 0; i < v.numfield(); i++ {
    values[i] = v.field(i).interface()
}

fmt.println("values: ", values)

这是我用来范围的代码, 但是这个返回错误

exception: &runtime.TypeAssertionError{_interface:(*runtime._type)(0xa458e0), concrete:(*runtime._type)(0xa05960), asserted:(*runtime._type)(0xa05c60), missingMethod:""}

谁能帮忙..


解决方案


带有反射的切片/数组范围不是用 numfield 和 field 完成的,它们在结构中使用。您需要的是 len() 和 index():

v := reflect.ValueOf(responseData.RecList)
values := make([]interface{}, v.Len())

for i := 0; i < v.Len(); i++ {
    values[i] = v.Index(i).Interface()
}

fmt.Println("values: ", values)

https://golang.org/pkg/reflect/#Value.Len

https://golang.org/pkg/reflect/#Value.Index

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>