Первый запуск и инструменты Go

Установка 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.