Подготовьте папку и запустите файл
Установите Go заранее и проверьте, что терминал его находит командой go version. Создайте папку hello-go, откройте её в редакторе и внутри создайте файл main.go. Перейдите в эту папку в терминале. Сохраните код целиком:
package main
import "fmt"
func main() {
city := "Казань"
fmt.Println("Привет,", city)
}
Запустите файл командой go run main.go. Вы увидите строку Привет, Казань. Команда go run получает имя файла относительно текущей папки, поэтому запуск из каталога-родителя без пути hello-go/main.go закончится ошибкой о ненайденном файле.
Разберите структуру
Каждый файл Go объявляет пакет. package main означает, что исходник входит в запускаемую программу. В небольшом примере пакет состоит только из одного файла; позднее один пакет может включать несколько файлов одной папки. Файлы одного пакета компилируются вместе и объявляют одинаковое имя пакета.
Строка import "fmt" подключает стандартный пакет fmt, который содержит функции форматированного ввода и вывода. Он входит в установку Go, скачивать его не нужно. Пакет указан перед вызовом: fmt.Println вызывает функцию Println из fmt. Такой способ показывает источник функции.
Объявление func main() задаёт специальную функцию, с которой начинается запуск программы main. После имени стоят круглые скобки для списка параметров; здесь параметров нет. Фигурные скобки ограничивают тело функции. Команды в теле выполняются по порядку, сверху вниз.
Строка city := "Казань" объявляет локальную переменную и одновременно присваивает начальное значение. Компилятор выводит тип string из строкового литерала. Выражение fmt.Println передаёт функции два аргумента: текст-подпись и значение переменной. Println разделяет их пробелом и добавляет перевод строки.
От исходника к программе
Go статически типизирован: компилятор проверяет совместимость типов до запуска. go run main.go компилирует файл во временную программу и сразу её выполняет. go build main.go выполняет сборку и сохраняет запускаемый файл в текущем каталоге, но не запускает его. go version показывает установленную версию инструментов.
Если сообщение говорит, что файл не найден, проверьте путь командой pwd и файлы командой ls (в PowerShell используйте Get-Location и dir). Если компилятор жалуется на неиспользуемое имя, прочитайте переменную в программе или удалите объявление.
Перейдите к самостоятельному упражнению в карточке практики.