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, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»
Сайт еще обновляется?
Приветствую. Огромное СПАСИБО за этот труд!