Go является компилируемым языком программирования. Перед запуском программы используется компилятор, что трансформирует ваш код в нули и единицы, понятные для компьютера. Весь текст кода компилируется в один исполняемый файл, который в дальнейшем можно запускать или передавать другим пользователям. По ходу процесса компилятор Go фиксирует опечатки и ошибки.
Содержание статьи
Не все языки программирования задействуют данный подход. Python, Ruby и некоторые другие популярные языки используют интерпретатор для перевода одного оператора за раз по ходу выполнения программы. Это значит, что в непротестированных частях программы могут остаться баги.
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
С другой стороны, интерпретаторы делают процесс написания кода быстрым и интерактивным, язык становится динамичным, ничем не обремененным. У компилированных языков сложилась репутация более статичных, неподвижных роботов, которых программистам приходиться усмирять. Сами компиляторы зачастую высмеивают за их медлительность. Но должно ли все быть именно так?
Мы хотели добиться безопасности и производительности статически компилируемых языков вроде С++ или Java, а также легкости и свободы интерпретируемых языков с динамической типизацией наподобие Python.
— Роб Пайк, Geek of the Week (Источник)
Go создан с большим вниманием к опыту написания программного обеспечения.
Большие программы компилируются за считанные секунды одной командой. Язык опускает аспекты, что приводят к неоднозначности, и пытается добиться предсказуемого и понятного кода. Go также предоставляет легкую альтернативу жесткой конструкции, навязанной
классическими языками наподобие Java.
Java опускает многие, редко используемые, зачастую сложные и запутанные особенности С++. Однако нам кажется, что это скорее минус, нежели плюс.
— Джеймс Гослинг, Java: an Overview
Каждый новый язык программирования переосмысливает идеи прошлого. Go, используя эффективность памяти, делает это с легкостью, избегая ошибок предшественников. Язык использует преимущество каждого ядра многоядерного процессора. Некоторые предприятия смогли добиться успеха после перехода на Go. К примеру, Iron.io заменил 30 серверов с Ruby на 2 сервера с Go (Источник). Bitly также добился существенного роста производительности после переписывании приложений Python в Go и последующей замены приложений C на Go (Источник).
Go сочетает простоту интерпретируемых языков с эффективностью и надежностью. Это небольшой язык с несколькими простыми концептами, который можно выучить довольно быстро. Вот три главных принципа, на которых строится идея Go:
Go является языком программирования с открытым исходным кодом, что позволяет создать простое, эффективное и надежное программное обеспечение.
— Go Brand Book
Обратит внимание, что при поиске информации о Go в Интернете лучше задействовать ключевое слово golang, то есть Go language. Суффикс -lang может использоваться и с другими языками программирования вроде Ruby, Rust и так далее.
Go Playground — Запуск кода онлайн
Начать практиковаться в Go можно на официальном сайте языка, где для этого есть специальный редактор — Go Playground. Здесь можно редактировать, выполнять и экспериментировать с Go без необходимости предварительно устанавливать что бы то ни было. При нажатии на кнопку Run код будет скомпилирован и выполнен на серверах Google, после чего отобразится результат.

При нажатии на кнопку Share вы получите ссылку на созданный код. Ее можно отправить друзьям или сохранить в закладках.
На заметку: Для проверки кода из примеров, данных далее, можете использовать Go Playground. Если вы уже знакомы с текстовыми редакторами и командной строкой, можете скачать и установить Go на компьютер.
Пакеты и функции в Golang
При переходе на Go Playground вы увидите следующий код. Это неплохая начальная точка.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
// Объявляет пакет, которому принадлежит код package main import ( // Делает пакет fmt (формат) доступным для использования "fmt" ) // Объявляет функцию под названием main func main() { // Выводит текст Hello, playground на экран fmt.Println("Hello, playground") } |
В данном кратком коде представлено три ключевых слова: package, import и func. У каждого слова есть свое предназначение.
Ключевое слово package объявляет пакет, которому текущий код принадлежит. В данном случае пакет называется main. Весь код Go строится на концепции пакетов.
Предоставляется стандартная библиотека, в которой есть пакеты для:
- математики;
- сжатия данных;
- криптографии;
- обработки изображений и многого другого.
Каждый пакет соответствует одной идее.
На следующей строке используется ключевое слово import для уточнения пакетов, которые будут задействованы в коде. Пакеты могут содержать любое количество функций. К примеру, пакет math предоставляет функции вроде Sin, Cos, Tan и Sqrt (квадратный корень).
Используемый здесь пакет fmt нужен для функций форматированного ввода и вывода. Отображение текста на экране является обычной операцией, поэтому название пакета было сокращено до более удобного — fmt.
Гоферы, или разработчики Go, произносят слово
fmtкак «FOOMT!», будто эффект взрыва из комикса.
Ключевое слово func объявляет функцию, в данном случае это main. Тело каждой функции обрамляется фигурными скобками {}. Именно с такой скобки начинается и заканчивается каждая функция Go.
Идентификатор main особенный. При запуске программы Go выполнение начинается с функции main из пакета main. Если в коде нет main, компилятор Go выдаст ошибку, так как без нее он не будет знать, где начинается программа.
Для вывода строки текста используется функция Println (ln сокращенно от line, то есть строка). У Println ставится префикс fmt, за которым следует точка. Это знак того, что здесь задействован пакет fmt. При использовании функции из импортированного пакета перед названием функции всегда ставится префикс с названием пакета и точкой. По этой причине во время чтения программы Go сразу понятно, к какому пакету относится каждая функция.
Запустите данную программу в Go Playground, чтобы получить текст Hello, playground. Текст, заключенный в кавычки, отобразится на экране. При написании обычного предложения поставленная не в том месте запятая может сильно изменить смысл фразы. Пунктуация играет важную роль и в программировании. В Go используются кавычки и скобки различного вида, которые позволяют облегчить процесс написания и чтения кода.
Скобки в Golang
Go достаточно придирчив в плане места размещения фигурных скобок {}. В предыдущем примере открывающая скобка { находится на той же строке, что и ключевое слово func. Закрывающая скобка } расположена на отдельной строке. Это единственный правильный скобочный стиль, также известный как one true brace style или 1TBS.
Чтобы понять, как Go стал таким строгим языком, нужно вернуться к времени его создания. Тогда структура кода был переполнена точками с запятой. Они были везде. Каждый оператор заканчивался точкой с запятой. К примеру:
|
1 |
fmt.Println("Hello, fire hydrant"); |
В декабре 2009 группе разработчиков Go удалось избавиться от точек с запятой из языка. Хотя, не совсем. По сути дела, компилятор Go стал автоматически добавлять точки с запятой. Все отлично. Однако теперь стало важным придерживаться единственного правильного скобочного стиля.
При размещении открывающей скобки в отдельной от ключевого слова func строке, компилятор Go выдаст ошибку синтаксиса:
|
1 2 3 |
func main() // отсутствует тело функции { // ошибка синтаксиса: лишняя точка с запятой или } // новая строка перед { |
Компилятор немного запутался. Точка с запятой была автоматически вставлена не в том месте. Будет лучше, если в процессе разбора уроков вы будете самостоятельно набирать тексты программ, чтобы лучше понять принцип их работы. Ошибки синтаксиса и опечатки неизбежны, и для ускорения работы в будущем очень полезно их корректировать и исправлять на этапе обучения.
Заключение
- На Go Playground можно использовать Go без предварительной установки;
- Каждая программа Go состоит из функций, что находятся в пакетах;
- Для вывода текста на экран используется пакет
fmt, предоставленный стандартной библиотекой; - Пунктуация также важна в языках программирования, как и в естественных языках;
- В уроке были рассмотрены 3 из 25 ключевых слов Go:
package,importиfunc.
При желании проверить собственные силы, можете выполнить следующее задание:
- Измените результат вывода, отредактировав текст между кавычками. Пускай, это будет ваше персональное приветствие.
- Отобразите две строки текста, написав вторую строку кода внутри тела
{}функцииmain. К примеру:
12fmt.Println("Hello, world")fmt.Println("Hello, Ѝउ ") - Go поддерживает символы любого языка. Выведите текст на китайском, японском, русском или румынском. При необходимости воспользуйтесь переводчиком Google Translate, после чего скопируйте и вставьте полученный текст в Go Playground.
- Модифицируйте код в Go Playground и нажмите на кнопку Run, чтобы увидеть результат. Если у вас возникли сложности, обновите браузер и посмотрите на оригинальный код.
- Используйте кнопку Share для получения ссылки на свою программу. Если хотите, можете поделиться результатом с друзьями или сохранить для себя.
Возможный вариант выполнения задания:
|
1 2 3 4 5 6 7 8 9 10 |
package main import ( "fmt" ) func main() { fmt.Println("Hello, Nathan") fmt.Println("こんにちは Здравствуйте Hola") } |

Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»
Сайт еще обновляется?
Приветствую. Огромное СПАСИБО за этот труд!