当前位置: 首页 > 面试题库 >

Go中语义注释的用途是什么?

陈斌蔚
2023-03-14
问题内容

通过与这个有关标签的问题进行类比,我注意到,除了纯注释之外,注释还有多种用途。

例子:

  • go:generate可用于代码生成。
  • godoc使用函数名称表示应解释的注释
  • 建立约束

还有其他我想念的吗?

那里有确定的清单吗?

gocontracts和go-
swagger
等一些第三方软件包也可以使用它们。他们如何避免彼此冲突?


问题答案:

如前所述,注释不仅是注释,而且是指令。

撰写本文时没有确定的清单。记录为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");
}


 类似资料:
  • 问题内容: 使用这些批注的重点是要独立于数据库提供程序,而不是重新生成JAR存档。 如果我坚持不懈,那么我首先看不到使用hibernate的意义。如果确实决定切换到其他数据库提供程序,则必须修改类中的注释,然后重新编译应用程序。 问题答案: @Table 批注:@Table批注允许您指定用于将实体保留在数据库中的表的详细信息。 @Table批注提供了四个属性,使您可以覆盖表的名称,目录和架构,并对

  • 问题内容: Hibernate文档具有以下有关注释的信息: 在纯Java API中,未定义时间的时间精度。处理时态数据时,您可能需要描述数据库中的预期精度。时间数据可以具有DATE,TIME或TIMESTAMP精度(即实际日期,仅时间或两者兼有)。使用@Temporal批注进行微调。 什么意思 什么是数据及其精度?如何调整? 问题答案: 必须为类型为和的持久字段或属性指定此注释。只能为这些类型的字

  • Hibernate文档包含以下注释的信息: 在普通的JavaAPI中,时间的时间精度没有定义。在处理时态数据时,可能需要描述数据库中的预期精度。时态数据可以具有日期、时间或时间戳精度(即实际日期、仅时间或两者)。使用@Temporal注释对其进行微调。 是什么意思?什么是数据及其精度?它如何微调?

  • 问题内容: 我有2个实体,如“父对子”和“一对多”关系 因此,这里 @LazyCollection(LazyCollectionOption.EXTRA)的 用途是什么,它将何时出现在图片中,例如对哪个带有子列表的操作有好处? 问题答案: 为了给您一个提示,主要是出于性能方面的考虑,您可以开始阅读以下链接: 二级缓存 休眠文档

  • 在我的项目代码库中,我看到许多地方使用了生成的注释。当我通读这些文件时,它说明了以下内容。 Lombok最终会自动将此注释添加到所有生成的构造函数、方法、字段和类型中。 根据文档,Lombok会自动为生成的代码添加注释。除此之外,不会生成任何像或这样的代码。我看不出使用它的理由。 我错过什么了吗?

  • 主要内容:godoc 工具注释在程序中的作用是对程序进行注解和说明,便于对源码的阅读。编译系统在对源代码进行编译时会自动忽略注释的部分,因此注释对于程序的功能实现不起任何作用。在源码中适当地添加注释,能够提高源码的可读性。 Go语言的注释主要分成两类,分别是单行注释和多行注释。 单行注释简称行注释,是最常见的注释形式,可以在任何地方使用以开头的单行注释; 多行注释简称块注释,以开头,并以结尾,且不可以嵌套使用,多行注释一般