# 2.1 Привет, Go Прежде, чем мы начнем конструировать приложение на Go, нам необходимо научиться писать простые программы. Вы не сможете построить здание, не узнав, сперва, как проложить фундамент. Вследствие чего, в этом разделе мы изучим базовый синтакс для запуска простой программы. ## Программа Согласно международной практике, изучение языков программирования принято начинать с написания программы, которая выводит текст "Hello, World". Вы готовы? Let's Go! package main import "fmt" func main() { fmt.Printf("Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちは世界 or Привет, мир\n") } Это выводит следующую информацию. Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちは世界 or Привет, мир ## Объяснение Во-первых, программы в Go состоят из `package` (пакетов). `package ` (В данном случае `package main`) говорит нам о том, что этот исходный файл принадлежит к `main` пакету. А ключевое слово `main`, что данный пакет должен компилироваться в программу, а не в пакет файлов с расширением `.a`. Каждая исполняемая программа имеет один и только один `main` пакет, а также вам необходимо реализовать функцию `main` без аргументов и возвращаемых значений. Чтобы вывести `Hello, world…`, мы вызвали функцию `Printf`. Эта функция находится в пакете `fmt`, поэтому нам надо импортировать этот пакет, что мы и делаем в третьей строчке кода - `import "fmt"`. Пакеты в Go похожи на аналогичные в Python, вот несколько преимуществ пакетов: Модульность (разбиение программы на несколько модулей) и повторное использование (каждый модуль может быть использован во множестве программ). Сейчас мы просто рассмотрели общее представление пакетов, и чуть позже напишем свой собственный пакет. В пятой строке мы использовали ключевое слово `func` для определения функции `main`. Тело функции находится внутри `{}`, прямо как в C, C++ и Java. Как вы видите, она не принимает ни один аргумент. Мы научимся писать функции, принимающие аргументы всего через минуту, а также функции которые не возвращают значение или возращают несколько. В шестой строке мы вызываем функцию `Printf`, которая находится в пакете `fmt`. Она была вызвана, используя синтаксис `.` (`<имя пакета>.<имя функции>`), в Python-стиле. Как мы упоминали в 1 главе, имя пакета и имя папки (которая содержит этот пакет) могут быть различными. Здесь `` (`<имя пакета>`) исходит из пакета, а не из имени папки. Как вы могли заметить, пример выше содержит множество символов, которых нет в таблице ASCII. Это было нужно для того, чтобы продемонстрировать, что Go поддерживает UTF-8 по-умолчанию. Вы можете использовать в ваших программах любой символ из UTF-8. ## Заключение Go использует `package` (пакет) для структурирования программ. Функция `main.main()` (эта функция находится в пакете `main`) - входной пункт каждой программы. Go поддерживает стандарт UTF-8, так как один из создателей Go является также одним из создателей UTF-8, так что Go поддерживает множество языков с самого рождения. ## Ссылки - [Содержание](preface.md) - Предыдущий раздел: [Введение в Go](02.0.md) - Следующий раздел: [Основы Go](02.2.md)