类似于Go中的.NET属性

4

在Go语言中类似于.net属性的东西是什么?

或者如何实现类似功能?


2
当你学习一门新语言时,最好问的是“我该如何使用语言Z解决这个特定的问题?”而不是“我会使用语言Y中的X功能来解决这个问题,那么我该如何将这个解决方案转换成语言Z?”这样你就可以学习新语言的习惯用法和优势。语言之间的差异越大,这种情况就越明显,尽管Go与Java或C#有一些表面上的相似之处,但它们还是存在显著的差异。 - Paul Hankin
1个回答

7
也许最相似的机制是Struct Tags。虽然不是最优雅的,但它们可以在运行时评估并提供有关结构体成员的元数据。
来自反射包文档: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

1
谢谢,这很有帮助 :) - Alpha Sierra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接