The importer of a package will use the name to refer to its contents, so exported names in the package can use that fact to avoid repetition. (Don't use the import . notation, which can simplify tests that must run outside the package they are testing, but should otherwise be avoided.) For instance, the buffered reader type in the bufio package is called Reader, not BufReader, because users see it as bufio.Reader, which is a clear, concise name. Moreover, because imported entities are always addressed with their package name, bufio.Reader does not conflict with io.Reader. Similarly, the function to make new instances of ring.Ring—which is the definition of a constructor in Go—would normally be called NewRing, but since Ring is the only type exported by the package, and since the package is called ring, it's called just New, which clients of the package see as ring.New. Use the package structure to help you choose good names.
Импортер пакета будет использовать это имя для ссылки на его содержимое, поэтому экспортируемые имена в пакете могут использовать этот факт, чтобы избежать повторения. (Не используйте нотацию import ., которая может упростить тесты, которые должны выполняться вне тестируемого пакета, но в противном случае их следует избегать.) Например, тип буферизованного чтения в пакете bufio называется Reader, а не BufReader, потому что пользователи видят его как bufio.Reader — ясное и лаконичное имя. Более того, поскольку к импортируемым объектам всегда обращаются по имени их пакета, bufio.Reader не конфликтует с io.Reader. Аналогично, функция создания новых экземпляров Ring.Ring — которая является определением конструктора в Go — обычно называется NewRing, но поскольку Ring — единственный тип, экспортируемый пакетом, и поскольку пакет называется Ring, она называется просто «Новый», который клиенты пакета видят как «ring.New». Используйте структуру пакета, чтобы выбрать хорошие имена.