Урок курса

Установка Go и первая программа: go run

Golang с нуля

Сначала запустим Go прямо здесь

Представьте небольшой сервис: человек отправляет заказ, а программа отвечает «Заказ принят». В конце курса вы доберётесь до HTTP-сервиса. Сейчас сделаем первый шаг — научим программу выводить свой ответ.

Для первой задачи ничего устанавливать не нужно. Код проверяется на Latorn. Достаточно браузера; установку Go на компьютер разберём после первого решения.

package main

import "fmt"

func main() {
    fmt.Println("Заказ принят")
}

Эта программа напечатает Заказ принят. Текст в кавычках можно заменить — изменится ответ программы. Каркас вокруг него пока оставьте как есть: ниже разберём, что означает каждая строка.

Теперь ваш ход

На следующем шаге уже подготовлен такой же каркас. Добавьте текст приветствия и отправьте решение на проверку. Если проверка найдёт ошибку, код можно поправить и отправить снова.

Перейти к первой программе →

На первый заход достаточно этой задачи и разбора каркаса после неё. Дальше — запуск на своём компьютере, работа с данными и функции. Не нужно освоить весь язык за один вечер.

Что вы только что запустили

В первой задаче программа вывела приветствие. Теперь разберём её четыре части, чтобы следующий код уже не выглядел набором заклинаний.

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}

package main говорит, что это исполняемая программа. import "fmt" подключает пакет стандартной библиотеки, который умеет выводить текст.

func main() — точка входа: выполнение начинается с команд внутри её фигурных скобок. fmt.Println выводит переданный текст и переводит строку.

Чтобы напечатать две строки, достаточно двух вызовов:

fmt.Println("Мария")
fmt.Println("Организатор")

Их нужно разместить внутри func main() { ... }. Кавычки отмечают границы текста; круглые скобки — аргументы вызова.

Две частые ошибки

Если убрать импорт fmt, оставив вызов fmt.Println, компилятор не найдёт имя fmt. Если забыть закрыть кавычку или скобку, программа тоже не запустится. Это повод проверить строку, указанную в сообщении об ошибке.

У Go есть и обратное правило: неиспользуемый импорт считается ошибкой. Для пустой func main() {} пакет fmt не нужен.

Дальше запустим такую программу в терминале. Если вы сейчас с телефона, к установке можно вернуться за компьютером; задачи этого урока доступны в браузере.

Устанавливаем Go и запускаем main.go

Первую программу вы уже можете проверить на сайте. Этот шаг нужен, чтобы запускать Go на своём компьютере и позже собирать собственные проекты.

Откройте инструкцию установки Go и выберите свою систему. В Windows и macOS используйте установщик; в Linux следуйте командам для вашей системы на этой странице.

После установки откройте новый терминал и выполните:

go version

В ответ должна появиться версия Go. Если команда не найдена, проверьте установку и переменную PATH по инструкции для вашей системы. Старое окно терминала может ещё не видеть обновлённый PATH.

Создайте новую учебную папку, сохраните в ней программу из предыдущего шага как main.go и откройте терминал в этой папке:

go run main.go

Команда соберёт и запустит файл. Если вы скопировали приветствие из предыдущего шага, увидите Hello, Go!.

Когда нужен go run .

go run main.go запускает указанный файл, а go run . — пакет текущей папки. Для первого файла достаточно первого варианта. Если в новой учебной папке второй вариант сообщает, что не найден go.mod, выполните go mod init example.com/hello. Подробнее модули разберём в следующем уроке.

Как читать ошибку

Если из программы убрать import "fmt", при запуске получится сообщение вроде:

./main.go:6:5: undefined: fmt

Это файл, строка, столбец и описание проблемы: компилятор не знает имя fmt. Приветствие ещё не печаталось — выполнение не началось. Верните импорт и запустите программу снова.

При пропущенной скобке сообщение будет другим. Начните с указанной строки и посмотрите также строку выше: причина может быть там. Ошибки уже работающей программы будем разбирать позже.

Задача 1

Первая программа: Hello, Go!

В редакторе уже есть каркас исполняемой Go-программы. Допишите тело main, чтобы программа вывела точную строку Hello, Go!.

Что уже дано

Объявление package main, импорт пакета fmt и функция main.

Что нужно сделать

Используйте знакомый fmt.Println и передайте ему строку Hello, Go!. Не добавляйте другой текст до или после требуемой строки.

Ввод и вывод

Программа не читает stdin. В stdout должна появиться одна строка Hello, Go!.

РешениеGo

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Задача 2

Какая строка объявления пакета обязательна, чтобы go run main.go успешно запустил программу с fmt.Println?

Выберите один вариант
Без регистрации · результат не сохраняется

Задача 3

Программист написал файл:

package main

import "fmt"

func main() {
    fmt.Println("ok")
}

Затем он удалил строку import "fmt" и выполнил go run main.go. Что произойдёт?

Выберите один вариант
Без регистрации · результат не сохраняется

Задача 4

Какую команду нужно выполнить в папке с main.go, чтобы Go скомпилировал файл во временный бинарник, сразу запустил программу и не оставил исполняемый файл в папке проекта? Введите команду полностью.

Без регистрации · результат не сохраняется

Задача 5

Программист выполнил go run main.go и увидел:

./main.go:6:5: undefined: fmt

Что это означает и где находится проблема?

Выберите один вариант
Без регистрации · результат не сохраняется

Задача 6

Бейдж: исправьте исходник

На конференциях и профессиональных встречах бейдж участника — это первое, что видит собеседник. Он должен сразу давать ответ на два главных вопроса: кто стоит перед тобой и в какой роли. Именно поэтому стойка регистрации выдаёт бейдж, где имя и роль напечатаны отдельными строками — чётко и без лишнего.

Небольшая программа на Go берёт на себя формирование такого бейджа: данные уже вшиты в неё заранее, и при запуске она просто выводит нужные строки в терминал. Никакого ввода ждать не нужно — всё готово к печати с первого же запуска.

Загвоздка в том, что полученный исходник содержит опечатку: где-то пропущена закрывающая скобка. Из-за этого программа отказывается компилироваться, и бейдж так и не появляется на экране. Задача — найти ошибку, исправить её и убедиться, что после запуска в терминале отображаются ровно две строки бейджа.

Что нужно сделать

В исходнике пропущена закрывающая круглая скобка вызова fmt.Println, поэтому программа не запускается. Исправьте синтаксическую ошибку, не меняя текст бейджа. Ввод читать не нужно.

Формат вывода

Ровно две строки:

Мария
Организатор
РешениеGo

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Продолжить с сохранением прогресса

Перейдите к уроку в учебном кабинете.

Перейти к интерактивному уроку