В этом разделе я ознакомлю Вас с несколькими средами разработки (IDE), которые помогут Вам более эффективно программировать. Они обладают такими возможностями как умное автодополнение и автоформатирование. Все они кроссплатформенные, поэтому шаги по настройке, которые я покажу, не будут слишком отличаться в зависимости от операционной системы, которую Вы используете.
Перед тем, как разработать приложения на Go, мы должны узнать, как пишутся простые программы. Мы не можем узнать, как построить дом без знания от том, как построить фундамент. Поэтому в этом разделе мы изучим основы синтаксиса для того, чтобы писать простые программы.
## Программа
Согласно международной практике перед тем, как начать обучение программированию на каком-либо языке, стоит узнать, как написать программу, которая выводит на экран фразу "Hello world".
Вы готовы? Поехали!
package main
import "fmt"
func main() {
fmt.Printf("Hello, world или 你好,世界 или καλημ ́ρα κóσμ или こんにちは世界\n")
}
Эта программа печатает следующую информацию:
Hello, world или 你好,世界 или καλημ ́ρα κóσμ или こんにちは世界
## Объяснение
Первое, что Вы должны запомнить - это то, что программы на 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, имя пакета и каталога, в котором находится пакет, могут различаться. В приведенном примере `<имяПакета>` задается командой `package <имяПакета>` и не зависит от имени каталога, в котором пакет находится.
Вы можете заметить, что вышеприведенный пример содержит множество символов, не относящихся к ASCII. Мы сделали это для того, чтобы показать, что Go по умолчанию поддерживает UTF-8. В программах можно использовать любой символ UTF-8.
## Заключение
Go использует пакеты - `package` (как модули в Python) для организации программ. Функция `main.main()` (она должна находиться в пакете `main`) является входной точкой любой программы. Go поддерживает символы UTF-8, так как один из создателей Go - создатель UTF-8, поэтому Go множество языков с момента своего создания.