Код VS — простая разработка примеров использования Go

Go

Код VS облегчает разработку примеров использования Go

Основная запись:

  • Использование плагина Go
  • Общее использование при разработке и использование горячих клавиш

Как использовать плагин Go:

  • императивная операция:

    1. Выберите, что нужно сделать
    2. в соответствии сctrl+shift+p,входить:go:相关命令
    3. Нажмите Enter, а затем введите параметры, требуемые соответствующей командой. Введите без параметров, чтобы изменения вступили в силу
  • Ручной указатель мыши

    1. выбранный контент
    2. Щелкните правой кнопкой мыши, чтобы открыть связанные операции, и выберите соответствующие команды, такие какGo:Generate Unit Tests For Function
    3. Щелкните команду, а затем введите параметры, необходимые для соответствующей команды. Вступает в силу без параметров

Автоматически генерировать тестовые случаи

Заказ:Go:Generate Unit Tests For Function

Пример

Тестовый код:

func Add(a, b int) int {
 return a + b 
}

После команды операции тестовый код будет сгенерирован в той же директории уровня файла, где находится функция:


func TestAdd(t *testing.T) {
 type args struct {
  a int
  b int
 }
 tests := []struct {
  name string
  args args
  want int
 }{
  // TODO: Add test cases.
 }
 for _, tt := range tests {
  t.Run(tt.name, func(t *testing.T) {
   if got := Add(tt.args.a, tt.args.b); got != tt.want {
    t.Errorf("Add() = %v, want %v", got, tt.want)
   }
  })
 }
}

TODO: Add test cases.Требуется, чтобы вы заполнили свои собственные тестовые случаи

Однако стоит отметить, что в тестовой функции используйтеt.Log()Функция не будет выводить контент в терминал, нужно добавить-vпараметр:

  1. Поиск установленных в магазине расширенийgoПлагины, нажмите в правом нижнем углузначок настроек
  2. Проверьте расширенные настройки
  3. оказатьсяGo:Build Flags,Добавить к-vпредметы следующим образом:
在这里插入图片描述
вставьте сюда описание изображения

Это выполнениеTestXXXфункция, вы можете вывести ее в терминалlogконтент

Автоматически генерировать экземпляр структуры

Заказ:Go:fill Struct

Пример

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

  1. Стукни один первым{}, то же самое верно для создания экземпляра любой структуры, например:u := &User{}, курсор{}, а затем выполните командную операцию.
  2. Тогда команда может работать

Сгенерированный код выглядит следующим образом:

tests := []struct {
  name string
  args args
  want int
 }{
  {
  name: "",
  args: args{
   a: 0,
   b: 0,
  },
  want: 0,
 }
 }

Но будь осторожен:

так какtestsТип представляет собой срез структуры[]struct, поэтому вам нужно вручную добавить запятую после сгенерированного кода,, нажмите сохранить для автоматического форматирования кода

Это часто используется, я установил сочетание клавишalt + f

Автоматически реализовывать интерфейсы

Заказ:Go:Generate Interface Stubs

Команда требует параметров, введите три элемента:

  • Имена параметров приемника метода, например:s
  • Имя получателя метода, то есть имя класса реализации, например:*Student, вы можете указать, является ли это типом значения или ссылочным типом
  • Имя реализуемого интерфейса, вам нужно добавить имя пакета, например:code.Speaker

Полный контент:s *Student code.Speaker

Пример

package code

type Speaker interface {
 // Speak speak action
 Speak()
}

type Student struct {
}

// Speak speak action
func (s *Student) Speak() {
 panic("not implemented") // TODO: Implement
}

Как видите, даже аннотации кстати тоже генерируются.

Автоматически добавлять / удалять теги

Добавить команду:Go:Add Tags To Struct Fileds

удалить команду:Go:Remove Tags From Struct Fileds

выберите, что вы хотите создатьtagполе, выполнить команду (добавление и удаление аналогично, нужно выбрать поле, будет выполнено только выбранное поле)

По умолчанию генерируется толькоjson tag,可以自定义。 существуетsetting.json,Присоединяйсяgo.addTagsпросто установите

Пример настройки:

 // 结构体tag 设置
  "go.addTags": {
    // 可配置多个tag json,orm
    "tags": "json,form",
    // options 可以填入json=omitempty
    "options": "",
    "promptForTags": false,
    // snakecase:下划线分隔, camelcase:驼峰命名
    "transform": "camelcase"
  },

Это также часто используется мной, установите сочетания клавишalt+a, удалить редко используемые, не заданные.

Пакет быстрого импорта

Заказ:Go:Add import

При нормальных обстоятельствах пакет автоматически импортируется при написании интеллектуальных подсказок или сохранении кода. Но иногда vscode вводит неправильный пакет, когда вводит пакет с таким же именем, который в основном является локальным.pkg->modВ каталоге есть библиотека с таким же названием, и vscode не может знать, какая именно.

В это время нам нужно импортировать вручную, выполнить команду, а затем ввести имя пакета, выбрать нужный из списка отображения и нажать Enter, поддержка нечеткого поиска

Это обычно используется, и я также установил сочетание клавиш:alt+i

Найдите конкретную реализацию интерфейса

  1. Наведите указатель мыши на определение интерфейса
  2. Ярлыкctrl+f12
  3. Или щелкните правой кнопкой мыши и выберите:Go to implementations

В этой операции возможны две ситуации:

  • Существует только одна реализация, затем перейдите непосредственно к реализованной структуре.
  • Если существует несколько реализаций, появится всплывающий интерфейс. В левом поле отображается реализованный код, а в правом поле отображается список реализаций. Оба связаны. Затем выберите реализацию, которую вы хотите увидеть, дважды щелкните, чтобы перейти

рефакторинг

Переименовать

  1. Выберите поля, методы, имена интерфейсов и т. д., которые вы хотите реорганизовать.
  2. в соответствии сF2, затем введите желаемое имя

Эта операция переименует все места, которые относятся к полю, методу и интерфейсу, и поддерживает кросс-файл.

Извлечение поля

Заказ:Go:Extract to variable

Полевая добыча в основном используется дляУсловия суждения сложныеЕсли условное суждение используется в нескольких местах, лучше извлечь его и извлечь в переменную.

работать:

  • Выберите, что извлечь
  • Выполнение заказа
  • Введите имя переменной для создания

Подождать 1с, сгенерировать код

извлечение функции

Заказ:Go:Extract to function

Извлечение функции в основном используетсяЛогика многоразового использованияместо действия. Извлеките ту же часть логики в функцию

работать:

  • Выберите, что извлечь
  • Выполнение заказа
  • Введите имя функции для создания

Подождать 1с, сгенерировать код

Пример

Оригинальный код:

func ExtractFuncTest(a, b, c int) {
 if a > 0 {
 }
 if b > 0 {
 }
 if c > 0 {
 }
}

Выделите логику внутри, код после извлечения функции:

func ExtractFuncTest(a, b, c int) {
 flag(a, b, c)
}

func flag(a int, b int, c int) {
 if a > 0 {
 }
 if b > 0 {
 }
 if c > 0 {
 }
}

Сторонняя библиотека добавлена ​​в текущую рабочую область

Как правило, в левой части vscode будет отображаться только каталог текущего проекта, а импортированные сторонние библиотеки не будут отображаться. не какGolandто же самое, естьExternal Libaryсодержание

Эта функция не очень проста в использовании, в настоящее время я могу импортировать только некоторыеgoбиблиотеки, такие какfmt,errorsБиблиотеки, сторонние библиотеки не работают. быть решенным

Установите связанные с Go команды, щелкните правой кнопкой мыши, чтобы отобразить часто используемые команды.

существуетsettings.jsonв, войтиgo.editorContextMenuCommands, на самом деле, ввод первых нескольких букв подскажет разумно, и после нажатия Enter конфигурация будет сгенерирована следующим образом:

"go.editorContextMenuCommands": {
"toggleTestFile": true,
"addTags": false,
"removeTags": true,
"testAtCursor": true,
"testFile": true,
"testPackage": false,
"generateTestForFunction": true,
"generateTestForFile": false,
"generateTestForPackage": false,
"addImport": false,
"testCoverage": true,
"playground": true,
"debugTestAtCursor": true
},

trueУказывает, что он включен.После настройки перезапустите VS code.

Ссылаться на:

Станция B - [Учебник] Вы действительно знаете, как использовать плагин vscode-go?