如前所述,注释不仅是注释,而且是指令。
撰写本文时没有确定的清单。记录为golang问题28532。
因此,我建议使用此答案来做一个。
用于go核心语言和工具本身:
- go:generate可用于代码生成。
- godoc使用函数名称表示应解释的注释
- 示例 -记录测试的预期输出(感谢@Butuzov)
- 构建约束(以’ // + build ‘ 开头)
- 导入注释,例如’ package math //导入“路径” ‘
第三方软件包中的显着用途
- gocontracts-指定前提条件作为注释
- go- swagger-使用swagger记录ReST API
- golangci,例如// nolint [:linter1,linter2,…]
他们如何避免彼此冲突?
如果您要开发的工具确实需要将注释视为属性,并希望避免与其他类似用途发生冲突,请在注释之前添加一个名称空间,例如“ {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");}


