Переменные среды и редактор кода
После установки Go нужно разобраться, как устроено рабочее окружение и настроить удобный редактор.
Переменные среды Go
Все настройки Go хранятся в переменных среды. Посмотреть их можно одной командой:
go env
Ключевые переменные
# Где установлен Go
go env GOROOT
# /usr/local/go
# Где живут ваши модули и бинарники
go env GOPATH
# /Users/username/go
# Включены ли модули (всегда on с Go 1.16)
go env GO111MODULE
# on
# Прокси для скачивания модулей
go env GOPROXY
# https://proxy.golang.org,direct
Настройка PATH
Чтобы запускать установленные Go-программы из любого места, добавьте $GOPATH/bin в PATH:
# ~/.bashrc или ~/.zshrc
export PATH=$PATH:$(go env GOPATH)/bin
Проверка:
# Установим полезную утилиту
go install golang.org/x/tools/cmd/goimports@latest
# Должна работать из любой директории
goimports --help
Изменение переменных
# Временно (для текущей сессии)
export GOPATH=/custom/path
# Постоянно через go env
go env -w GOPATH=/custom/path
go env -w GOPRIVATE=github.com/mycompany/*
Выбор редактора
VS Code (рекомендуется для начинающих)
Установите расширение Go от Google (golang.go):
Ctrl+Shift+X → поиск "Go" → Install
Что даёт расширение:
- Автодополнение кода (через
gopls) - Переход к определению (
F12) - Показ ошибок в реальном времени
- Форматирование при сохранении (
goimports) - Запуск тестов из редактора
- Отладка с breakpoints
Настройки в settings.json:
{
"go.formatTool": "goimports",
"go.lintTool": "golangci-lint",
"editor.formatOnSave": true,
"[go]": {
"editor.defaultFormatter": "golang.go",
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
}
}
GoLand (JetBrains)
Полноценная IDE для Go. Платная, но есть бесплатная лицензия для студентов и open source. Всё работает из коробки без настройки.
Vim/Neovim
Плагин fatih/vim-go или LSP через gopls:
" vim-go минимальная настройка
let g:go_fmt_command = "goimports"
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
<ComparisonTable data={{ headers: ["Редактор", "Плюсы", "Минусы"], rows: [ ["VS Code", "Бесплатный, лёгкий, отличное Go расширение", "Не полноценная IDE"], ["GoLand", "Мощный рефакторинг, всё из коробки", "Платный, тяжёлый"], ["Vim/Neovim", "Быстрый, терминальный", "Долгая настройка"] ] }} />
Полезные Go-утилиты
# Форматирование + импорты
go install golang.org/x/tools/cmd/goimports@latest
# Линтер (находит баги и стилевые проблемы)
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
# Статический анализ
go vet ./...
# Документация в браузере
go install golang.org/x/tools/cmd/godoc@latest
godoc -http=:6060
Go Modules
Каждый проект начинается с инициализации модуля:
mkdir myproject && cd myproject
go mod init github.com/username/myproject
Файл go.mod - манифест проекта:
module github.com/username/myproject
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
)
Основные команды:
go mod tidy # удалить неиспользуемые, добавить недостающие
go mod download # скачать зависимости
go mod vendor # скопировать зависимости в vendor/