Хочете швидко підняти повноцінне локальне середовище для Go у Linux і більше не ламати голову над змінними середовища, модулями та тестами? Ви в правильному місці! Я — Kernelka, і зараз покажу, як безпечно й чисто все налаштувати: від встановлення Go до налагодження з Delve та автотестів з покриттям. Усе робимо в термінал Linux із чіткими кроками та зрозумілими поясненнями 🐧
Що встановити: Go, Git і базові інструменти
Для стабільного старту нам потрібні Git, компілятор та кілька утиліт. Це базові linux команди через apt команди:
sudo apt update
sudo apt install -y build-essential git curl tar
Варіант 1 (рекомендований): офіційний tarball з go.dev
Так ви отримаєте найновішу стабільну версію Go і повний контроль над GOROOT/GOPATH.
# Дізнатися останню версію та завантажити
VER=$(curl -sSL https://go.dev/VERSION?m=text | head -n1)
curl -OL https://go.dev/dl/${VER}.linux-amd64.tar.gz
# Встановити в /usr/local/go (потребує sudo)
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf ${VER}.linux-amd64.tar.gz
# Налаштувати змінні середовища для bash
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc
Варіант 2: через репозиторій дистрибутива (простий)
Швидко, але версія може бути не найсвіжіша.
sudo apt update
sudo apt install -y golang-go
Перевірка встановлення
go version
which go
echo $GOROOT
echo $GOPATH
Якщо go version працює — вітаю, основа готова для Go в Linux і подальша розробка на Linux виглядає райдужно ✨
Go modules, GOPATH і структура проєкту
Сучасні проєкти в Go використовують модулі (Go modules), тож GOPATH лишається для кешу та інструментів. Створімо мінімальний застосунок.
mkdir -p ~/dev/hello && cd ~/dev/hello
go mod init example.com/hello
package main
import "fmt"
func main() {
fmt.Println(Hello("world"))
}
func Hello(name string) string {
return "Hello, " + name
}
Додайте залежність і синхронізуйте модуль:
go get github.com/google/uuid@latest
go mod tidy
Запустіть:
go run .
Автотести і покриття 🧪
Go постачається з інструментом тестування. Додайте простий тест:
package main
import "testing"
func TestHello(t *testing.T) {
got := Hello("gopher")
want := "Hello, gopher"
if got != want {
t.Fatalf("got %q want %q", got, want)
}
}
Запуск тестів і збір покриття:
# Детальні тести
go test -v
# Усі пакети з покриттям
go test ./... -cover
# Звіт з покриття у файл та HTML
go test -coverprofile=cover.out ./...
go tool cover -func=cover.out
go tool cover -html=cover.out -o cover.html
Порада: використовуйте підхід "table-driven tests" для зручного масштабування кейсів.
Налагодження з Delve
Delve — стандартний дебагер для Go. Встановимо останню версію через модулі (інструмент потрапить у $GOPATH/bin):
go install github.com/go-delve/delve/cmd/dlv@latest
Базовий сценарій налагодження в терміналі:
cd ~/dev/hello
# Запуск з Delve
dlv debug
# У консолі dlv:
# (dlv) b main.Hello
# (dlv) c
# (dlv) p name
# (dlv) q
Віддалене налагодження (headless) — корисно для сервера або інтеграції з IDE:
dlv debug --headless --listen=:2345 --api-version=2 --log
На деяких дистрибутивах Ubuntu потрібен дозвіл на ptrace для attach:
echo 'kernel.yama.ptrace_scope = 0' | sudo tee /etc/sysctl.d/10-ptrace.conf
sudo sysctl --system
Альтернативні способи встановлення та середовища
ASDF (менеджер версій Go)
Коли потрібно тримати різні версії Go для різних проєктів:
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc && source ~/.bashrc
asdf plugin add golang https://github.com/asdf-community/asdf-golang.git
asdf install golang latest
asdf global golang latest
Контейнеризоване оточення
Ізольований простір для збірок без засмічення системи:
docker run -it --rm -v "$PWD":/src -w /src golang:latest bash
GUI-спосіб: VS Code + розширення Go
Якщо вам зручніше працювати у вікні, встановіть VS Code і офіційне розширення Go. IDE автоматично підтягне gopls, dlv та інші інструменти, а запуск налагодження здійснюється з панелі Run. Базова конфігурація launch.json для налагодження:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Go (dlv)",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}"
}
]
}
Після першого запуску VS Code запропонує встановити потрібні інструменти. Погоджуйтеся — це швидко й зручно.
FAQ
Go не знаходиться в PATH (command not found)
Перевірте, чи додали шляхи в ~/.bashrc і виконали source ~/.bashrc. Для інших шелів додайте у відповідний конфіг (~/.zshrc тощо).
go: not in GOROOT або дивні помилки імпорту
Встановлюйте Go з офіційного tarball і перевірте GOROOT=/usr/local/go. Для модулів обов’язково запускайте go mod tidy.
Delve не може приєднатися (permission denied)
Увімкніть ptrace, як описано вище, або запускайте налагодження як той самий користувач, що й процес.
go test не бачить файли
Тести виконуються з каталогом пакета. Використовуйте абсолютні шляхи або testing з os.Getwd(), або //go:embed для вбудовування ресурсів.
Повільні завантаження модулів
Спробуйте прямий проксі: GOPROXY=direct GOSUMDB=off go mod download або виберіть найближчий дзеркальний проксі.
Порада від Kernelka
Створіть простий скрипт scripts/dev.sh, щоб автоматизувати рутину (тести, форматування, лінт). Потім запускайте однією командою — менше механічних дій, більше фокусу на коді 🛠️
Підсумок
- Встановили Go офіційно або через пакетний менеджер і налаштували PATH.
- Ініціалізували модулі, підключили залежності, запустили застосунок.
- Додали автотести та сформували звіти з покриття.
- Освоїли налагодження з Delve в терміналі та у VS Code.
- Побачили альтернативи: asdf та контейнеризовані середовища.
- Тепер ваше локальне середовище для Go у Linux повністю готове до роботи!

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.