与Go中的.net属性类似

时间:2014-05-29 21:17:18

标签: go

与go lang中的.net attributes类似。

或者如何实现这一目标?

1 个答案:

答案 0 :(得分:7)

也许最相似的机制是结构标签。不是最优雅的,但可以在运行时评估它们并提供struct成员的元数据。

来自反映包文档:type StructTag

例如,它们用于自定义元素名称的JSON和XML编码。

例如,使用标准的json包,假设我有一个带有字段的结构我不想出现在我的JSON中,另一个字段我想要只在它不是空的时候出现,而第三个我想要使用与结构的内部名称不同的名称来引用。以下是使用标记指定的方式:

type Foo struct {
    Bar string `json:"-"` //will not appear in the JSON serialization at all
    Baz string `json:",omitempty"` //will only appear in the json if not empty
    Gaz string `json:"fuzz"` //will appear with the name fuzz, not Gaz
}

我正在使用它来记录和验证REST API调用中的参数,以及其他用途。

如果保留'可选的空格分隔键:“值”'语法,则可以使用StructTag的Get方法访问各个键的值,如example中所示。