Переменные среды и редактор кода

После установки 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
GOPATH содержит три папки: - `bin/` - скомпилированные бинарники (`go install`) - `pkg/` - кеш модулей - `src/` - (устаревшее) раньше тут хранили исходники

Настройка 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/

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