Уникальность экспортируемых идентификаторов из разных пакетов - PullRequest
0 голосов
/ 19 января 2019

Я читаю спецификацию go и столкнулся с следующим разделом :

Уникальность идентификаторов

Учитывая набор идентификаторов, идентификатор называется уникальным, если он отличается от всех остальных в наборе. Два идентификатора разные если они пишутся по-разному, или если они появляются в разных пакетов и не экспортируются . В остальном они одинаковые.

Я пока не знаю, почему важно ввести это определение, но мне кажется, что оно подразумевает, что идентичные именованные экспортируемые идентификаторы из разных пакетов одинаковы . Я что-то не так понимаю?

1 Ответ

0 голосов
/ 19 января 2019

Я что-то не так понимаю?

Да.

Идентификаторы определяются по имени пакета.


Спецификация языка программирования Go n

Квалифицированные идентификаторы

Квалифицированный идентификатор - это идентификатор, квалифицированный префиксом имени пакета.И имя пакета, и идентификатор не должны быть пустыми.

QualifiedIdent = PackageName "." identifier .

Квалифицированный идентификатор обращается к идентификатору в другом пакете, который должен быть импортирован.Идентификатор должен быть экспортирован и объявлен в блоке пакета этого пакета.

math.Sin  // denotes the Sin function in package math

Декларации импорта

PackageName используется в квалифицированных идентификаторах для доступа к экспортированным идентификаторампакет в импортируемом исходном файле.Это объявлено в блоке файла.Если PackageName опущено, по умолчанию используется идентификатор, указанный в предложении пакета импортируемого пакета.Если вместо имени появляется явный период (.), Все экспортированные идентификаторы пакета, объявленные в блоке пакета этого пакета, будут объявлены в блоке файла импортирующего исходного файла и должны быть доступны без квалификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...