Golang 可变字段

Posted

技术标签:

【中文标题】Golang 可变字段【英文标题】:Golang Changeable field 【发布时间】:2021-12-08 02:13:42 【问题描述】:

我想知道是否可以为 golang 制作一个可变结构。 事情就是这样。 JSON有不同的对象。 它始终包含“元”,但“数据”将如下更改。

"meta":"A":"AA, "B":"BB", "data":"C":"CC"
"meta":"A":"DD, "B":"EE", "data":"F":"FF"

在我的 golang 代码中,有很多 JSON 结构,如下所示。

type meta struct 
    A  string  `json:"A"`
    B float64 `json:"B"`


type data1 struct 
    C int64 `json:"C"`


type JSON1 struct 
    MetaData meta `json:"meta"`
    Contents data1 `json:"data"`


type data2 struct 
    C int64 `json:"F"`


type JSON2 struct 
    MetaData meta `json:"meta"`
    Contents data2 `json:"data"`

所以,我需要定义所有的结构。 有什么办法可以让 Contents 字段可变以减少 JSON"A"、"B" 的定义?

感谢您提前回复。

【问题讨论】:

试试Contents interface `json:"data"` 【参考方案1】:

您可以使用map[string]interface

type JSON struct 
    MetaData meta                   `json:"meta"`
    Contents map[string]interface `json:"data"`

然后访问如下数据:

var d JSON
...
content, ok := d.Contents["F"] // ok is false if "F" is not present

【讨论】:

以上是关于Golang 可变字段的主要内容,如果未能解决你的问题,请参考以下文章

golang 怎么定义可变参数的函数

golang 中可变参数的个数

golang中可变长参数的使用

golang中可变长参数的使用

GoLang笔记-数组和切片,本质是就是长度不可变的可变的区别

golang的"..."备忘