Код VS облегчает разработку примеров использования Go
Основная запись:
- Использование плагина Go
- Общее использование при разработке и использование горячих клавиш
Как использовать плагин Go:
-
императивная операция:
- Выберите, что нужно сделать
- в соответствии с
ctrl+shift+p,входить:go:相关命令 - Нажмите Enter, а затем введите параметры, требуемые соответствующей командой. Введите без параметров, чтобы изменения вступили в силу
-
Ручной указатель мыши
- выбранный контент
- Щелкните правой кнопкой мыши, чтобы открыть связанные операции, и выберите соответствующие команды, такие как
Go:Generate Unit Tests For Function - Щелкните команду, а затем введите параметры, необходимые для соответствующей команды. Вступает в силу без параметров
Автоматически генерировать тестовые случаи
Заказ: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параметр:
- Поиск установленных в магазине расширений
goПлагины, нажмите в правом нижнем углузначок настроек - Проверьте расширенные настройки
- оказаться
Go:Build Flags,Добавить к-vпредметы следующим образом:
Это выполнениеTestXXXфункция, вы можете вывести ее в терминалlogконтент
Автоматически генерировать экземпляр структуры
Заказ:Go:fill Struct
Пример
В модульном тесте, сгенерированном выше, экземпляр структуры создается автоматически, когда необходимо добавить тестовый пример.
- Стукни один первым
{}, то же самое верно для создания экземпляра любой структуры, например:u := &User{}, курсор{}, а затем выполните командную операцию. - Тогда команда может работать
Сгенерированный код выглядит следующим образом:
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
Найдите конкретную реализацию интерфейса
- Наведите указатель мыши на определение интерфейса
- Ярлык
ctrl+f12 - Или щелкните правой кнопкой мыши и выберите:
Go to implementations
В этой операции возможны две ситуации:
- Существует только одна реализация, затем перейдите непосредственно к реализованной структуре.
- Если существует несколько реализаций, появится всплывающий интерфейс. В левом поле отображается реализованный код, а в правом поле отображается список реализаций. Оба связаны. Затем выберите реализацию, которую вы хотите увидеть, дважды щелкните, чтобы перейти
рефакторинг
Переименовать
- Выберите поля, методы, имена интерфейсов и т. д., которые вы хотите реорганизовать.
- в соответствии с
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?