Академический Документы
Профессиональный Документы
Культура Документы
[править | править код]
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться
от версии, проверенной 3 сентября 2019; проверки требует 31 правка.
Go
Тип компилируемый
исполнения
Появился в 10 ноября 2009
Расширение .go
файлов
Испытал Си[1], Python, Оберон-2, Limbo, Active
влияние Oberon, теория взаимодействия
последовательных
процессов, Паскаль[1], Оберон[1], Smalltalk[2], New
squeak[d][3], Модула-2[3], Alef[d], APL, BCPL, Моду
ла и Оккам
Лицензия BSD
Сайт golang.org
ОС DragonFly
BSD, FreeBSD, Linux, macOS, NetBSD, OpenBS
D, Plan 9, Solaris и Microsoft Windows
Содержание
1Название
2Назначение, идеология
3Основные возможности языка
4Синтаксис
o 4.1Алфавит
o 4.2Пакеты
o 4.3Модули
o 4.4Комментарии и точки с запятой
o 4.5Встроенные типы данных
4.5.1Целые числа
4.5.2Числа с плавающей запятой
4.5.3Числовые типы с неограниченной точностью
4.5.4Комплексные числа
4.5.5Логические значения
4.5.6Строки
o 4.6Объявление типов
o 4.7Объявление переменных
o 4.8Автоматический вывод типов
o 4.9Присваивания
o 4.10Аргументы функций и методов
o 4.11Функции могут возвращать несколько значений
o 4.12Псевдопеременная «_»
o 4.13Механизм отложенного вызова defer
o 4.14Условия циклов и ветвлений
o 4.15Циклы
o 4.16Оператор множественного выбора.
5Особенности архитектуры
o 5.1Обработка ошибок и исключительных ситуаций
o 5.2Многопоточность
o 5.3Объектно-ориентированное программирование
o 5.4Рефлексия
o 5.5Низкоуровневое программирование
o 5.6Интерфейс с кодом на других языках
o 5.7Интерфейс пользователя
6Критика
o 6.1Отсутствие возможностей
o 6.2Архитектура
o 6.3«Подводные камни» (неудачная реализация некоторых средств)
o 6.4Другие особенности
7Распространение и перспективы
8Версии
o 8.1Нумерация и принципы совместимости версий
o 8.2Go 1
o 8.3Go 2.0
9Реализации
10Средства разработки
11Примеры
12Примечания
13Пояснения
14Литература
15Ссылки
Название[править | править код]
Название языка, выбранное компанией Google, практически совпадает с названием языка
программирования Go!, созданного Ф. Джи. МакКейбом и К. Л. Кларком в 2003 году[7].
Обсуждение названия ведётся на странице, посвящённой Go[7].
На домашней странице языка и вообще в Интернет-публикациях часто используется
альтернативное название — «golang».
Синтаксис[править | править код]
Синтаксис языка Go схож с синтаксисом языка Си, с отдельными элементами,
заимствованными из Оберона и скриптовых языков.
Алфавит[править | править код]
Go — регистрозависимый язык с полной поддержкой Юникода в строках и идентификаторах.
Идентификатор традиционно может быть любой непустой последовательностью,
включающей буквы, цифры и знак подчёркивания, начинающийся с буквы и не совпадающий
ни с одним из ключевых слов языка Go. При этом под «буквами» понимаются все символы
Юникода, относящиеся к категориям «Lu» (буквы верхнего регистра), «Ll» (буквы нижнего
регистра), «Lt» (заглавные буквы), «Lm» (буквы-модификаторы) или «Lo» (прочие буквы), под
«цифрами» — все символы из категории «Nd» (числа, десятичные цифры). Таким образом,
ничто не мешает использовать в идентификаторах, например, кириллицу.
Идентификаторы, различающиеся только регистром букв, являются различными. В языке
существует ряд соглашений об использовании заглавных и строчных букв. В частности, в
именах пакетов используются только строчные буквы. Все ключевые слова Go пишутся в
нижнем регистре.
В строковых литералах могут использоваться все символы Юникода без ограничений. Строки
представляются как последовательности символов в кодировке UTF-8.
Пакеты[править | править код]
Любая программа на Go включает один или несколько пакетов. Пакет, к которому относится
файл исходного кода, задаётся описанием package в начале файла. Имена пакетов имеют те
же ограничения, что и идентификаторы, но могут содержать буквы только нижнего регистра.
Система пакетов go-среды имеет древовидную структуру, аналогичную дереву каталогов.
Любые глобальные объекты (переменные, типы, интерфейсы, функции, методы, элементы
структур и интерфейсов) доступны без ограничений в пакете, в котором они объявлены.
Глобальные объекты, имена которых начинаются на заглавную букву, являются
экспортируемыми.
Для использования в файле кода Go объектов, экспортированных другим пакетом, пакет
должен быть импортирован, для чего применяется конструкция import .
package main
/* Импорт */
import (
"fmt" // Стандартный пакет для форматированного вывода
"database/sql" // Импорт вложенного пакета
w "os" // Импорт с псевдонимом
. "math" // Импорт без квалификации при использовании
_ "gopkg.in/goracle.v2" // Пакет не имеет явных обращений в коде
)
func main() {
for _, arg := range w.Args { // Обращение к массиву Args, объявленному в
пакете "os", через псевдоним
fmt.Println(arg) // Обращение к функции Println(), объявленной в
пакете "fmt", с именем пакета
}
db *sql.DB = sql.Open(driver, dataSource) // Имена из вложенного пакета
квалифицируются
// только именем самого пакета
(sql)
x := Sin(1.0) // вызов math.Sin() - квалификация именем пакета math не
нужна,
// так как он импортирован без имени
// Обращений к пакету "goracle.v2" в коде нет, но он будет импортирован.
}