Разработка на Go с помощью VSCode

Visual Studio Code (VS Code) — это бесплатный редактор кода с открытым исходным кодом, разработанный Microsoft, который поддерживает множество языков программирования и предоставляет такие возможности, как подсветка кода, интеллектуальное автодополнение кода, рефакторинг кода и отладка.

С официальным расширением Go для Visual Studio Code вы можете получить ряд практических возможностей для разработки проектов на Go, включая IntelliSense, навигацию по коду, поиск символов, модульное тестирование и отладку программ.

Если вы не знакомы с VS Code или ещё не установили его, можете обратиться к:Учебник по VSCode。

Установка плагина Go

Откройте магазин расширений VS Code и выполните поиск:Go Extension for VS Code。

В редакторе слева нажмите «Расширения», найдите Go, затем установите официальный плагин:

После установки мы можем начать писать код на Go, введяfmt.Попробуйте IntelliSense:


IntelliSense

IntelliSense предоставляется языковым сервером gopls, поддерживаемым официальной командой Go. Его поведение можно настроить с помощью параметров конфигурации gopls.

1. Семантическая подсветка

VS Code по умолчанию использует подсветку синтаксиса на основе грамматики TextMate; чтобы включить более качественную семантическую подсветку, включите её в настройках.ui.semanticTokens:

"gopls": { "ui.semanticTokens": true }

2. Автодополнение кода

При редактировании исходного кода Go расширение предоставляет предложения автодополнения в реальном времени, поддерживая подсказки членов из текущего пакета, импортированных пакетов и ещё не импортированных пакетов; введите "имя пакета + .", чтобы вызвать подсказки методов/констант в этом пакете.

Горячие клавиши:Ctrl+空格(⌃Space)Вручную вызвать всплывающее окно автодополнения

3. Всплывающая подсказка документации при наведении

Наведите курсор на переменные, функции или структуры, чтобы увидеть всплывающее окно с подробностями, такими как комментарии документации и сигнатуры функций.

4. Подсказки параметров функции

Введите открывающую круглую скобку функции(Сигнатура параметра автоматически всплывает при вызове функции; при вводе аргументов подчёркивание следует за переключением на текущий заполняемый параметр;

Горячие клавиши:Shift+Cmd+空格(⇧⌘Space)Вручную вызывать подсказки параметров, когда курсор находится внутри круглых скобок.

Навигация по коду

Контекстное меню редактора, вызываемое правой кнопкой мыши, включает полный набор функций навигации по коду:

  • F12 Перейти к определению: переход к исходному определению типа/переменной
  • Перейти к определению типа: найти исходный код нижележащего типа переменной.
  • Alt+F12 (⌥F12) Просмотреть определение: всплывающий предпросмотр исходного кода без переключения файлов
  • Shift+F12 (⇧F12) Найти все ссылки: список всех мест ссылок на текущий символ
  • Shift+Alt+H(⇧⌥H) Иерархия вызовов: просмотр цепочки вызывающих и вызываемых для функции.
  • Cmd+F12 (⌘F12) Просмотреть реализации: для интерфейса — просмотреть все реализующие типы; для конкретного типа — просмотреть все интерфейсы, которые он реализует.

Открыть палитру командShift+Cmd+P(⇧⌘P), быстро перейти с помощью поиска по символам:

  • Shift+Cmd+O(⇧⌘O): Поиск символов в текущем файле
  • Cmd+T(⌘T): Глобальный поиск символов по всему рабочему пространству

Использование командыGo: Toggle Test File, быстро переключайтесь туда и обратно между бизнес-кодом и соответствующим тестовым файлом.


Форматирование кода

  • Горячие клавиши:Shift+Alt+F(⇧⌥F)Форматирование текущего файла в один клик
  • Вы также можете выполнить "Format Document" через палитру команд или контекстное меню по правому щелчку.

Настройка форматирования

  1. Отключить автоформатирование при сохранении

    "[go]": {
        "editor.formatOnSave": false
    }
  2. Установить расширение Go как форматтер по умолчанию для файлов Go.

    "[go]": {
        "editor.defaultFormatter": "golang.go"
    }
  3. Включить строгий стиль форматирования gofumpt (строже, чем встроенные правила gofmt).

    "gopls": {
        "formatting.gofumpt": true
    }

    Форматирование реализовано через gopls под капотом


Модульное тестирование

Боковая панель Test Panel в VS Code + быстрые кнопки CodeLens над кодом поддерживаютФункция/Файл/Пакет/Весь проектдля модульных тестов, бенчмарк-тестов и профилирования производительности.
Ввод в палитре командGo: testВы можете просмотреть все команды тестирования; часто используемые:

  • Go: Test Function At Cursor: запустить тест для функции, в которой находится курсор
  • Go: Test File: запустить все тестовые случаи в текущем файле
  • Go: Test Package: запустить все тесты в текущем пакете
  • Go: Test All Packages in Workspace: пакетное тестирование всего проекта

Первые три команды могут автоматически генерировать скелеты тестовых случаев на основе gotests; расширение поддерживает настройку:

  • go.testOnSave: Автоматически запускать тесты при сохранении кода
  • go.coverOnSave: Автоматически генерировать покрытие тестами при сохранении
  • go.testFlags: Настраивать параметры запуска go test

Debug

Расширение Go использует отладчик Delve для отладки кода Go и обладает уникальными возможностями:

  1. Локальная отладка + отладка удалённого сервиса
  2. Используйте синтаксис выражений Delve для просмотра пользовательских данных в панели отладки.
  3. Выполняйте нативные команды dlv в консоли отладки, чтобы динамически изменять конфигурацию отладки и просматривать переменные.
  4. КонфигурацияhideSystemGoroutinesСкрыть/показать системные горутины
  5. Щёлкните код правой кнопкой мыши, чтобы открыть представление ассемблера (представление дизассемблирования).
  6. Экспериментальные функции: отладка вызовов функций, анализ core-файлов и обратная отладка Mozilla rr.

Другие связанные инструменты

Другие расширения