通过与这个有关标签的问题进行类比,我注意到,除了纯注释之外,注释还有多种用途。
例子:
还有其他我想念的吗?
那里有确定的清单吗?
gocontracts和go- swagger等一些第三方软件包也可以使用它们。他们如何避免彼此冲突?
如前所述,注释不仅是注释,而且是指令。
撰写本文时没有确定的清单。记录为golang问题28532。
因此,我建议使用此答案来做一个。
用于go核心语言和工具本身:
第三方软件包中的显着用途
他们如何避免彼此冲突?
如果您要开发的工具确实需要将注释视为属性,并希望避免与其他类似用途发生冲突,请在注释之前添加一个名称空间,例如“ {mytool} :“
有一些有意识的命名空间尝试。内置到go中的魔术注释使用“ go:”作为“ go:generate”的前缀(除非没有)
go-swagger使用“ swagger:”
但是,您仍然需要谨慎处理此问题,并检查此处的列表或您可以找到的任何其他来源。
还应考虑使用注释是最佳方法还是唯一方法,而不是使用函数。比较例如(gocontracts):
// SomeFunc ensures: // * !strings.HasSuffix(result, "smth") func SomeFunc(x int) (result string) { // ... }
与(godbc)
func SomeFunc(x int) (result string) { godbc.Require(strings.HasSuffix(result,"smth"); }