Go: с нуля до своего блога Урок 2 из 50
Как установить Go и настроить VS Code: рабочее место с нуля
Второй урок курса по Go. Что поставить до первой строки кода: сам Go 1.27, редактор VS Code с расширением Go, папка проекта и команда go mod init. Разбираем, кто за что отвечает: язык, редактор, расширение и терминал. В конце ваша первая программа здоровается с миром в терминале.
Зачем это нужно
Программист работает тремя разными вещами: языком, редактором и терминалом. Новичок их путает — и потом не понимает, кто виноват, когда что-то не заработало.
Полчаса сейчас, и вы будете знать, к кому идти с какой бедой. Это скучный урок, но он единственный такой: дальше будет только код.
Сразу целиком
Вот к чему мы придём. Папка с двумя файлами:
go-oqu/
└── sabaq-01/
├── go.mod
└── main.go
И команда, которая её запускает:
go run .
Привет, мир!
Всё остальное в уроке — как к этому прийти и что здесь что.
Разбор
Три инструмента и кто за что отвечает
Go — это сам язык плюс набор команд. Он превращает написанный вами текст в работающую программу. Без него не запустится ничего.
Образ. Прораб с бригадой. Вы приносите чертёж, он строит по нему дом. Чертёж сам по себе жить негде.
Редактор — окно, в котором вы пишете текст. Сам он ничего не запускает и ничего не понимает в Go, пока ему не помогут. Мы возьмём VS Code: он бесплатный и одинаково работает на Windows, macOS и Linux.
Образ. Стол с лампой, линейкой и хорошей бумагой. Чертить можно и на коленке в потёмках — просто медленнее и с ошибками.
Терминал — окно, где программе отдают команды текстом. Он встроен в VS Code, отдельно открывать не нужно.
Образ. Окошко приёма заявок. Вы пишете на бумажке, что нужно сделать, и подаёте внутрь.
Запомните это разделение, оно экономит часы:
- программа не собирается и Go ругается на ваш код — виноват код;
- в редакторе красное подчёркивание, но
go runработает — это подсказка расширения, а не ошибка; - терминал отвечает «команда не найдена» — дело в установке, а не в программе.
Ставим Go
Откройте go.dev/dl. Скачайте установщик для своей системы: берите последнюю стабильную версию, которую предлагает страница — на момент написания урока это go1.27.1. Запустите его и пройдите обычные «Далее».
Не распаковывайте архив руками куда попало. Установщик кладёт Go туда, где система его найдёт, и прописывает его в PATH.
PATH — это список папок, в которых терминал ищет команды. Когда вы набираете go, терминал не ищет по всему диску, он смотрит только в этот список. Поэтому программа, установленная «мимо» PATH, есть на диске, но для терминала её не существует.
Образ. Список адресов у курьера. Магазин может стоять на соседней улице, но если его нет в списке, курьер вернётся и скажет: такого нет. Он не обходит город, он читает список.
Закройте терминал и откройте заново — он читает PATH при запуске. Проверьте:
go version
Должна прийти строка вроде go version go1.27.1 darwin/arm64. Последние два слова — ваша система и тип процессора, у вас они будут свои.
Ставим редактор
Откройте code.visualstudio.com, скачайте, установите.
Расширение — это дополнение, которое учит редактор чему-то новому. Из коробки VS Code не знает про Go ничего.
Образ. Насадка на дрель. Дрель одна, а сверлит она и дерево, и бетон — смотря что вы в неё вставили.
Нужно одно обязательное. Нажмите Ctrl+Shift+X (на Mac ⇧⌘X), наберите в поиске Go и поставьте расширение, у которого автор Go Team at Google. Оно официальное.
Когда вы первый раз откроете файл с расширением .go, редактор внизу справа предложит Install All. Соглашайтесь. Он доставит несколько вспомогательных программ; главная называется gopls — она и даёт подсказки при наборе, показывает ошибки, пока вы ещё печатаете, и приводит код к общему виду при сохранении.
Образ. Корректор, читающий через плечо. Вы ещё пишете фразу, а он уже подчёркивает опечатку карандашом.
По желанию поставьте Error Lens — он пишет текст ошибки прямо в строке, а не прячет его под подчёркивание. Новичку это заметно помогает.
Если не получилось. Кнопка Install All не появилась — нажмите
Ctrl+Shift+P(на Mac⌘⇧P), наберитеGo: Install/Update Tools, отметьте всё и подтвердите. Терминал отвечаетcommand not found: go, хотя установщик отработал — закройте терминал и редактор целиком и откройте заново: PATH читается при запуске. Если и это не помогло, перезагрузите компьютер: на Windows это чаще всего и есть лекарство. На школьном или рабочем компьютере ставить программы запретили — язык до урока про сервер можно проходить на go.dev/play прямо в браузере, но начиная с сервера понадобится своя машина, и это стоит выяснить сейчас, а не через две недели.
Папка для работы
Раньше Go требовал держать код в одном особом месте. Это правило (GOPATH) давно отменили: проект теперь — просто папка. Но своё место нужно вам, а не Go.
Создайте одну папку под весь курс, а внутри — по папке на урок:
- macOS и Linux:
~/go-oqu/sabaq-01 - Windows:
%USERPROFILE%\go-oqu\sabaq-01— то есть внутри вашей папки пользователя. В корень дискаC:\обычная учётная запись писать не всегда может.
Папку можно создать мышкой, а можно командой. В терминале VS Code на Windows по умолчанию открывается PowerShell, и в нём папка пользователя называется $HOME, а не %USERPROFILE%:
cd $HOME
mkdir go-oqu
cd go-oqu
На macOS и Linux то же самое:
cd ~
mkdir go-oqu
cd go-oqu
Не Рабочий стол и не Загрузки: там файлы теряются среди чужих, а Загрузки некоторые системы чистят сами. И называйте папки латиницей без пробелов — путь с пробелами и кириллицей время от времени ломает инструменты, а разбираться в этом на втором уроке незачем.
Откройте эту папку в редакторе: File → Open Folder. Важно открыть именно папку, а не отдельный файл, иначе подсказки работать не будут.
go mod init: как назвать проект
Откройте терминал внутри VS Code — меню Terminal → New Terminal или сочетание Ctrl + ` (клавиша с обратным апострофом, слева от единицы). В папке урока выполните:
go mod init sabaq01
Рядом появится файл go.mod из двух строк — имя проекта и версия Go. Это его паспорт: по нему Go понимает, где проект начинается и как он называется.
Образ. Табличка с адресом на доме. Без неё почтальон видит стены, но не знает, где заканчивается один дом и начинается другой.
Строго говоря, программа из шести строк запустится и без него. Но без go.mod редактор работает в урезанном режиме: границы проекта не определены, и часть подсказок пропадает. Полностью разберём модули, когда дойдём до пакетов.
Почему чтения мало
Скажем сразу, чтобы вы не потеряли время.
Чтение не даёт умения. Оно готовит почву: после урока вам кажется, что всё понятно, — и это ощущение обманывает.
Причина вот в чём. Когда вы читаете, вы узнаёте: строка на экране выглядит знакомой, и знакомость мозг легко принимает за понимание. Но узнать написанное и написать самому — разные действия, и тренируются они порознь. Память, которая работает при чтении, короткая: она держит то, на что вы смотрите сейчас, и через несколько дней отпускает. Поэтому прочитанное и выветривается — вы ничего не делали руками.
Набор устроен иначе. Печатая, вы достаёте код из головы, а не опознаёте его на странице, и повторение откладывается в другой памяти — той, что зовут мышечной. Она копится медленнее, зато держится годами и не требует внимания: пальцы сами ставят двоеточие перед равно и закрывают фигурную скобку, сами помнят, в каком порядке идут func, имя и скобки, — а голова в это время занята задачей, а не синтаксисом. Это та же память, что у музыканта и спортсмена, и работает она так же.
Отсюда не следует, что читать не надо. Нужны обе половины, и ни одна не заменяет другую: чтение даёт сведения — что такое срез, почему append возвращает новый, — а набор превращает сведения в умение. Без первого вы будете угадывать, без второго — только узнавать чужой код.
Чемпионов, выучивших бокс по книге, не бывает. Нет певцов, освоивших голос чтением о голосе, и танцоров, поставивших шаг по описанию шага. Программирование ничем не отличается: читать о коде и писать код — два разных занятия, и второе нельзя заменить первым.
Отсюда правило на весь курс:
- Задание решайте в VS Code. Редактор подчёркивает ошибку, пока вы ещё печатаете, подсказывает имена и приводит отступы в порядок при сохранении. Он учит вас по ходу дела — поле на сайте так не умеет.
- Запустите и убедитесь, что работает.
go run .и своими глазами на результат. - И только потом — проверка на сайте. Она нужна не чтобы найти опечатку, а чтобы подтвердить, что задание понято правильно. Проверок три на урок, и тратить их на то, что редактор показал бы бесплатно, незачем.
Первая программа
Создайте в той же папке файл main.go:
package main
import "fmt"
func main() {
fmt.Println("Привет, мир!")
}
«Привет, мир!» — полвека первая программа на любом языке печатает приветствие миру, и на английском она называется Hello, World. Традицию мы не нарушаем, просто говорим на своём языке.
Что написано в этих шести строках
Разберём каждое слово. Заучивать не нужно: эти строки стоят в начале любой программы на Go, и вы запомните их сами, просто набрав несколько раз.
package main — объявление, что это за файл. Пакет — папка с кодом, у которой есть имя. Имя main особенное: оно означает «программа, которую можно запустить», а не «набор деталей для чужих программ».
Образ. Табличка на двери.
main— «ВХОД», сюда заходят с улицы. Пакет с любым другим именем — служебное помещение: дверь есть, но она не для посетителей.
import "fmt" — что взять с собой в работу. fmt (от английского format) умеет печатать текст. Не написали import — инструмента нет, и программа не соберётся.
Образ. Склад инструментов и ваш верстак.
import— это то, что вы сняли со склада и положили перед собой. Всё остальное лежит на полках, и рука до него не дотянется.
func — начало функции. Функция — это записанный порядок действий, у которого есть имя. Пока её не вызвали, не происходит ничего.
Образ. Рецепт в тетради. Он лежит и ждёт. Пока по нему не начали готовить, на кухне пусто.
main — имя этой функции, и оно тоже особенное: именно сюда Go входит, когда программа запускается. Такая функция в программе ровно одна.
Образ. Парадная дверь. Комнат в доме сколько угодно, но входят всегда через неё.
() — круглые скобки после имени. В них передают то, с чем функция работает. У main внутри пусто: ей ничего не передают, она просто начинается.
{ и } — фигурные скобки. Всё между ними и есть тело функции, то, что она делает.
Образ. Стены комнаты.
{— вошли,}— вышли. Скобки всегда парные: стены без второй стены не бывает.
fmt.Println("Привет, мир!") — печатает строку в терминал. Точка читается как «из»: «из fmt возьми Println». Само имя — от английского print line: напечатать строку и перевести курсор на новую.
Образ. Ящик с инструментами и инструмент в нём.
fmt— ящик,Println— молоток, точка — рука, которая его достаёт.
Шесть строк, восемь понятий. Дальше в курсе они уже не объясняются — считается, что вы их знаете.
Запустите:
go run .
Точка означает «всё, что лежит в этой папке». Можно было написать и go run main.go, но с точкой не придётся ничего менять, когда файлов станет больше.
Карта урока
Скажите своими словами
Не подглядывая, ответьте вслух или на бумаге. Ответы — в конце урока.
- Если удалить VS Code, ваша программа перестанет запускаться?
- Терминал отвечает
command not found: go. Что именно произошло и где искать причину? - Зачем нужен
go.mod, если программа из шести строк работает и без него?
Задание
Обязательное. Пройдите урок до конца: Go установлен, папка создана, go run . печатает приветствие. Потом замените «мир» на своё имя и запустите ещё раз.
По желанию.
- Откройте
go.modи прочитайте обе строки. Что там написано? - Создайте рядом папку
sabaq-02и повторите всё по памяти, не подглядывая. - Уберите из
main.goстрокуimport "fmt"и запустите. Прочитайте, что скажет Go, и верните обратно. Полезно один раз увидеть ошибку намеренно.
Куда это встанет в блоге
В этой папке будет жить ваш блог. Все следующие уроки начинаются одинаково: новая папка, go mod init, main.go — пока в уроке про пакеты мы не соберём всё в один проект.
Ответы
Показать ответы
- Нет. Редактор — это окно для текста; запускает программу Go. Писать можно хоть в «Блокноте», просто без подсказок и неудобно.
- Терминал перебрал папки из PATH и не нашёл там команду
go. Либо Go не установлен, либо установщик прописал путь уже после того, как терминал был открыт. Сначала закройте и откройте терминал заново; на Windows иногда нужно выйти из системы и войти снова. - Программа из шести строк действительно запустится.
go.modнужен, как только появятся чужие пакеты или несколько файлов, — и он нужен редактору уже сейчас: без негоgoplsне видит границ проекта и молчит.
Источники
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.