«Хеллоуворлд» является классическим примером первого приложения на новом языке программирования.
Рассмотрим пример такого приложения на языке Go. Для начала достаточно любого текстового редактора и установленного в системе Golang. Единственным файлом, содержащим весь код нашей программы является hello.go :
// "Хэллоуворлд" на Golang package main import "github.com/common-nighthawk/go-figure" func main() { myFigure := figure.NewFigure("Hello, World!", "univers", true) myFigure.Print() }
Запустить этот код можно командой go run:
> go run hello.go 88 88 88 88 I8, 8 ,8I 88 88 88 88 88 88 88 `8b d8b d8' 88 88 88 88 88 88 88 "8, ,8"8, ,8" 88 88 88 88aaaaaaaa88 ,adPPYba, 88 88 ,adPPYba, Y8 8P Y8 8P ,adPPYba, 8b,dPPYba, 88 ,adPPYb,88 88 88""""""""88 a8P_____88 88 88 a8" "8a `8b d8' `8b d8' a8" "8a 88P' "Y8 88 a8" `Y88 88 88 88 8PP""""""" 88 88 8b d8 aaa `8a a8' `8a a8' 8b d8 88 88 8b 88 "" 88 88 "8b, ,aa 88 88 "8a, ,a8" "88 `8a8' `8a8' "8a, ,a8" 88 88 "8a, ,d88 aa 88 88 `"Ybbd8"' 88 88 `"YbbdP"' d8' `8' `8' `"YbbdP"' 88 88 `"8bbdP"Y8 88 8"
Да, предварительно нужно командой go get github.com/common-nighthawk/go-figure установить единственную внешнюю зависимость — библиотеку для отрисовки текста при помощи ASCII-art. Эта команда скачает код библиотеки и положит его в каталог go\bin\src\github.com\common-nighthawk\go-figure\, откуда он будет использован для компиляции приложения.
Команда run выполняет две задачи — сначала компилирует исходный код в машинный, а затем запускает скомпилированный код.
Если нужно только скомпилировать программу без запуска, можно воспользоваться командой go build. В таком случае, будет скомпилирован исполняемый файл с именем файла с исходным кодом:
> go build hello.go > ls hello.exe hello.go
После этого, можно непосредственно запустить скомпилированный исполняемый файл, результат получим аналогичный:
> hello.exe 88 88 88 88 I8, 8 ,8I 88 88 88 88 88 88 88 `8b d8b d8' 88 88 88 88 88 88 88 "8, ,8"8, ,8" 88 88 88 88aaaaaaaa88 ,adPPYba, 88 88 ,adPPYba, Y8 8P Y8 8P ,adPPYba, 8b,dPPYba, 88 ,adPPYb,88 88 88""""""""88 a8P_____88 88 88 a8" "8a `8b d8' `8b d8' a8" "8a 88P' "Y8 88 a8" `Y88 88 88 88 8PP""""""" 88 88 8b d8 aaa `8a a8' `8a a8' 8b d8 88 88 8b 88 "" 88 88 "8b, ,aa 88 88 "8a, ,a8" "88 `8a8' `8a8' "8a, ,a8" 88 88 "8a, ,d88 aa 88 88 `"Ybbd8"' 88 88 `"YbbdP"' d8' `8' `8' `"YbbdP"' 88 88 `"8bbdP"Y8 88 8"
Как устроен исходный код данной программы
Рассмотрим каждую строку кода отдельно.
1. Первая строка начинается со строки // — это обозначение начала комментария:
// "Хэллоуворлд" на Golang
Комментарии в коде игнорируются компилятором и могут использоваться для упрощения понимания кода другими программистами, в том числе, автором кода, по прошествии некоторого времени.
В настоящее время, Go поддерживает два вида комментариев:
- Однострочный комментарий
// Однострочный комментарий. Содержимое строки игнорируется компилятором
- Многострочный комментарий
/* Многострочный комментарий. Как следует из названия, данный вид комментария ограничивается только парами символов, открытия и закрытия комментария. */
2. Вторая строка — это объявление пакета:
package main
Любая программа на Go начинается с объявления пакета. Пакеты используются для организации исходных кодов и облегчения их переиспользования.
Пакет main используется для обозначения точки входа в программу.
В Go возможны два типа программ — исполняемый программы и библиотеки. Как следует из названия, исполняемые программы могут быть запущены из командной строки, а библиотеки могут только быть использованы другими программами для выполнения определенных задач.
3. Четвертая строка — объявление импорта
import "github.com/common-nighthawk/go-figure"
Ключевое слово import используется для подключения необходимых пакетов, которые будут использоваться в программе.
В данном случае, подключается пакет common-nighthawk/go-figure, используемый для вывода текста в виде ASCII-art. Один из вариантов установки этого пакета описан выше.
4. Шестая строка — объявление функции
func main() { // ... }
Функция — это блок кода, содержащий одну или более инструкцию для выполнения задачи. Обычно программы дробятся на небольшие кусочки — функции, которые могут принимать определенные параметры на вход и возвращать определенные данные на выходе.
Для декларации функции в языке Go используется ключевое слово func.
Функция main() является точкой входя исполняемой программы на Go. Это первая функция, которая будет вызвана при запуске программы.
5. Седьмая строка — инициализация переменной myFigure значением, возвращаемым функцией NewFigure из пакета go-figure. Функции NewFigure передаются три параметра — текст для вывода, стиль текста и флаг необходимости выбрасывать ошибку при наличии некорректного символа в первом параметре.
myFigure := figure.NewFigure("Hello, World!", "univers", true)
6. Восьмая строка — вызов функции myFigure.Print(), которая и выводит в консоль текст в стиле ASCII-art.
Заключение
Пример программы, приведенной выше, не следует традиции использовать только стандартную библиотеку языка. Напротив, код содержит пример использования сторонней библиотеки для вывода текста в консоль.