类似于this question关于标签,我注意到注释的用途不仅仅限于纯注释。
示例:
还有其他我想念的吗?
在某个地方有明确的清单吗?
gocontracts和go-swagger之类的某些第三方程序包也使用它们。他们如何避免彼此冲突?
答案 0 :(得分:1)
Examples-允许测试example
输出的功能。
从上面的链接复制/粘贴。
package stringutil_test
import (
"fmt"
"github.com/golang/example/stringutil"
)
func ExampleReverse() {
fmt.Println(stringutil.Reverse("hello"))
// Output: olleh
}
答案 1 :(得分:0)
如comments are directives in go所述,不仅仅是评论。
在编写最终列表时没有。 记录为golang issue 28532。
因此,我建议使用此答案来做一个。
使用go核心语言和工具本身
在第三方程序包中的显着用途
如何避免彼此冲突?
如果您要开发的工具确实需要将注释视为属性,并希望避免与其他类似用途发生冲突,请在注释之前添加一个名称空间,例如“ {mytool} :”
有一些有意识的命名空间尝试。 内置在go中的魔术注释使用“ go:”前缀,如“ go:generate” (除非他们没有)
go-swagger使用“ swagger:”
但是,您仍然需要谨慎处理并检查此处的列表或您可以找到的任何其他来源。
还要考虑注释是否是最好的or only方法,而不是使用函数。 比较例如(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");
}