Установка Go и первая программа: go run
Содержание курса
Минимальный каркас Go-программы: package main, import, func main, fmt.Println
Создайте в удобном месте папку для проекта и внутри неё файл main.go. Минимальная работающая программа выглядит так:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
В этом примере четыре элемента. package main и func main() образуют каркас исполняемой программы, а import "fmt" и fmt.Println нужны именно для выбранного способа вывести строку.
package main — каждый обычный Go-файл объявляет пакет; до строки package могут стоять комментарии и служебные директивы. Имя main здесь особенное: вместе с функцией main оно делает пакет исполняемой программой. Пакет с другим именем может быть корректной библиотекой, но go run не запустит его как программу.
import "fmt" — директива подключает пакет fmt из стандартной библиотеки Go. Без неё идентификатор fmt в коде будет неизвестен компилятору. Здесь есть симметричное правило в обе стороны: импортировать пакет и не использовать его — тоже ошибка компиляции. Go не разрешает мёртвый импорт. Это вынуждает держать зависимости чистыми с самого начала.
func main() — функция без параметров и без возвращаемых значений, с которой операционная система начинает выполнение программы. Она должна быть именно в пакете main. Если переименовать её в func start() — программа не запустится: точки входа не будет.
fmt.Println(...) — вызов функции Println из пакета fmt. Она выводит переданные аргументы в терминал и добавляет перевод строки. Запись fmt.Println читается как «функция Println из пакета fmt» — пакет и функция разделяются точкой.
Если убрать package main или func main(), исполняемая программа потеряет необходимый каркас. Если убрать import "fmt", пока в коде остаётся fmt.Println, компилятор не сможет найти имя fmt. Пустая func main() {} при этом корректно собирается без fmt: импорт нужен нашему примеру, а не каждой программе Go.
