Привет, Golang!

«Хеллоуворлд» является классическим примером первого приложения на новом языке программирования.

Рассмотрим пример такого приложения на языке 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.

Заключение

Пример программы, приведенной выше, не следует традиции использовать только стандартную библиотеку языка. Напротив, код содержит пример использования сторонней библиотеки для вывода текста в консоль.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *