Go语言 如何定义函数签名的json结构类型?

2ic8powd  于 2022-12-16  发布在  Go
关注(0)|答案(1)|浏览(118)

我有一个结构体定义

type ds struct {
    name     string
    TagList                          []struct {
        Key   string `json:"Key"`
        Value string `json:"Value"`
    } `json:"TagList"`
}

我希望有一个函数将TagList转换为字符串数组(我自己的序列化函数)。

func serialize(tagList <?>) string


我不确定应该定义什么类型〈?〉。因为如果我用

serialize(mydata.TagList)  // mydata is the ds struct type

然后它会提醒我这个类型是[]struct{...}
但是我不确定如何定义[]结构{...}。
我也对现有的序列化库API持开放态度,只要它序列化为字符串,我就可以用来做这件事。

5cg8jx4n

5cg8jx4n1#

推荐的方法是为嵌套的struct字段声明一个新类型,以便在需要时可以按名称引用该类型;例如:

type Tag struct {
    Key   string `json:"Key"`
    Value string `json:"Value"`
}

type ds struct {
    name    string
    TagList []Tag `json:"TagList"`
}

// ...

func serialize(tagList []Tag) string {
    // ...
}

否则,如果不声明新类型,就必须在每个要使用该类型的地方重复匿名结构体的整个类型定义;例如:

func serialize(tagList []struct {
    Key   string `json:"Key"`
    Value string `json:"Value"`
}) string {
    // ...
}

相关问题