我有一个结构体定义
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,我可以使用它来实现这一点,只要它序列化成一个字符串。
推荐的方法是为嵌套的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 {
// ...
}