转到const的命名约定


117

我正在尝试确定constGolang中的名称是否有命名约定。

我个人倾向于遵循C风格并以大写形式编写它们,但是我在此页面http://golang.org/doc/effective_go.html上未找到任何内容,该页面似乎列出了该语言的一些命名约定。


5
我很乐意以FOO_BAR_BAZ易于阅读的方式编写常量,但是不幸的是,这会影响常量的可见性,而且并不常见。即使我不喜欢它,我也不得不放下自己的骄傲并接受惯例。
byxor

Answers:


131

标准库使用驼峰式大小写,因此我建议您也这样做。首字母是大写还是小写,取决于您是否要导出常量。

一些例子:

  • md5.BlockSize
  • os.O_RDONLY 是一个例外,因为它是直接从POSIX借来的。
  • os.PathSeparator

7
确定是否要将const元素暴露给其他包也很重要。如果您使用UpperCamelCaseALL_CAPS将其导出到包装之外。出于这个原因,我坚持lowerCamelCase使用私有const变量,而且我记得从与Go项目相对较近的人(甚至在官方文档中,我忘记了在哪里)读过此建议。
weberc2 2014年

81

去代码审查评论

该页面收集了在Go代码复查期间提出的常见注释,因此,速记可以引用一个详细的说明。这是常见错误的清单,而不是样式指南。

您可以将其视为http://golang.org/doc/effective_go.html的补充 。

混合帽

请参阅http://golang.org/doc/effective_go.html#mixed-caps。即使在违反其他语言的约定时也是如此。例如,未导出的常量是maxLength而不是MaxLength或MAX_LENGTH。


有效执行

混合帽

最后,Go中的约定是使用MixedCaps或mixedCaps而不是使用下划线来编写多字名称。


Go编程语言规范

导出的标识符

标识符可以被导出以允许从另一个包访问它。如果同时满足以下条件,则导出标识符:

  • 标识符名称的第一个字符是Unicode大写字母(Unicode类“ Lu”);和

  • 标识符在包块中声明,或者是字段名或方法名。

所有其他标识符都不会导出。


使用混合帽。


12

具体的例子。请注意,在常量中声明类型(相关时)可能对编译器有所帮助。

// Only visible to the local file
const localFileConstant string = "Constant Value with limited scope"

// Exportable constant
const GlobalConstant string = "Everyone can use this"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.