如何在Go语言中通过函数向结构体添加标签

huangapple go评论82阅读模式
英文:

How to add Tags to Struct by function in golang

问题

我从REST.body接收数据,然后使用json.Unmarshal将数据编码为以下结构体,然后创建data到file.txt。然后当file.txt创建后,我可以进行搜索。

我的问题是:结构体中的键太多,从1到50,如下所示。我不知道如何解决这个问题。有人建议使用map[string]string,但我不想将结构体更改为map。

type Items []Item

type Item struct {
    Id        string `json:"id"        required:"true"`
    CompCd    string `json:"compCd"    required:"true"`
    OrgCd     string `json:"orgCd"`
    QstnId    string `json:"qstnId"    required:"true"`
    QstnIdSeq string `json:"qstnIdSeq" required:"true"`
    CustId    string `json:"custId"`
    AnsDts    string `json:"ansDts"    required:"true"`
    AnsRout   string `json:"ansRout"   required:"true"`
    QCd01     string `json:"qCd01"`
    QKey01    string `json:"qKey01"`
    QStc01    string `json:"qStc01"`
    QCat01    string `json:"qCat01"`
    Pont01    string `json:"pont01"`
    PCat01    string `json:"pCat01"`
    Comt01    string `json:"comt01"`
    QCd02     string `json:"qCd02"`
    QKey02    string `json:"qKey02"`
    QStc02    string `json:"qStc02"`
    QCat02    string `json:"qCat02"`
    Pont02    string `json:"pont02"`
    PCat02    string `json:"pCat02"`
    Comt02    string `json:"comt02"`
    .
    .
    .
    QCd50  string `json:"qCd50"`
    QKey50 string `json:"qKey50"`
    QStc50 string `json:"qStc50"`
    QCat50 string `json:"qCat50"`
    Pont50 string `json:"pont50"`
    PCat50 string `json:"pCat50"`
    Comt50 string `json:"comt50"`
}
英文:

I receive data from REST.body -> encoding data with json.Unmashal to Struct like below then create data to file.txt. Then i can search when file.txt created.
My problem: keys in struct too many from 1 - 50 like below. I don't know how to solve it. Some recommend is use map[string]string but i dont wanna change Struct to map.

type Items []Item

type Item struct {
	Id        string `json:"id"        required:"true"`
	CompCd    string `json:"compCd"    required:"true"`
	OrgCd     string `json:"orgCd"`
	QstnId    string `json:"qstnId"    required:"true"`
	QstnIdSeq string `json:"qstnIdSeq" required:"true"`
	CustId    string `json:"custId"`
	AnsDts    string `json:"ansDts"    required:"true"`
	AnsRout   string `json:"ansRout"   required:"true"`
	QCd01     string `json:"qCd01"`
	QKey01    string `json:"qKey01"`
	QStc01    string `json:"qStc01"`
	QCat01    string `json:"qCat01"`
	Pont01    string `json:"pont01"`
	PCat01    string `json:"pCat01"`
	Comt01    string `json:"comt01"`
	QCd02     string `json:"qCd02"`
	QKey02    string `json:"qKey02"`
	QStc02    string `json:"qStc02"`
	QCat02    string `json:"qCat02"`
	Pont02    string `json:"pont02"`
	PCat02    string `json:"pCat02"`
	Comt02    string `json:"comt02"`
    .
    .
    .
	QCd50  string `json:"qCd50"`
	QKey50 string `json:"qKey50"`
	QStc50 string `json:"qStc50"`
	QCat50 string `json:"qCat50"`
	Pont50 string `json:"pont50"`
	PCat50 string `json:"pCat50"`
	Comt50 string `json:"comt50"`
}  

答案1

得分: 3

正如Alex提到的,无法在运行时添加标签。然而,Fatih(vim-go的创建者,用于Go的Vim扩展)有一个命令行工具可以修改结构体的标签。这是该仓库,也许可以帮到你。

英文:

As Alex mentions, it is not possible to add tags at runtime. However, Fatih (creator of the vim extension for go, vim-go) has a cli-tool to modify the tags of a struct. Here is the repo, maybe it could help you.

huangapple
  • 本文由 发表于 2017年2月20日 10:13:11
  • 转载请务必保留本文链接:https://go.coder-hub.com/42335433.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定