Соглашения об именах в Go для const


117

Я пытаюсь определить, существует ли соглашение об именах для имен constв Голанге.

Лично я склонен следовать стилю C и писать их в верхнем регистре, но я не нашел на этой странице http://golang.org/doc/effective_go.html ничего, что, кажется, перечисляет некоторые соглашения об именах для языка.


5
Я бы хотел писать константы в таком FOO_BAR_BAZстиле для удобства чтения, но, к сожалению, это влияет на видимость константы, и это нечасто. Мне просто пришлось проглотить свою гордость и принять соглашение, даже если оно мне не нравится.
byxor 05

Ответы:


132

В стандартной библиотеке используется camel-case, поэтому я советую вам это сделать. Первая буква может быть прописной или строчной, в зависимости от того, хотите ли вы экспортировать константу.

Несколько примеров:

  • md5.BlockSize
  • os.O_RDONLY является исключением, потому что он был заимствован непосредственно из POSIX.
  • os.PathSeparator

7
Также важно определить, хотите ли вы, чтобы ваш constэлемент был доступен другим пакетам. Если вы используете UpperCamelCaseили ALL_CAPSбудете экспортировать его за пределы своего пакета. По этой причине я придерживаюсь lowerCamelCaseзакрытых константных переменных и помню, как читал эту рекомендацию от кого-то, кто относительно близок к проекту Go (или, возможно, даже в официальной документации - я забыл где).
weberc2 07

82

Комментарии к обзору кода Go

На этой странице собраны общие комментарии, сделанные во время обзоров кода Go, так что одно подробное объяснение можно назвать сокращениями. Это подробный список распространенных ошибок, а не руководство по стилю.

Вы можете просмотреть это как дополнение к http://golang.org/doc/effective_go.html .

Смешанные шапки

См. Http://golang.org/doc/effective_go.html#mixed-caps . Это применимо, даже если оно нарушает соглашения на других языках. Например, неэкспортированная константа - это maxLength, а не MaxLength или MAX_LENGTH.


Эффективный Go

MixedCaps

Наконец, в 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"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.