Агент экспортированного типа должен иметь комментарий или быть не экспортированным.
Я попробовал этот код в Голанге
type Agent struct {
name string // Not exported
categoryId int // Not exported
}
Тогда я получил это
exported type Agent should have comment or be unexported
Предупреждение отчасти раздражает.
Как от этого избавиться? какой комментарий я должен поставить? Есть ли какой-либо шаблон комментария по умолчанию для этого?
Он просит меня оставить комментарий, но не предлагает добавить его по умолчанию.
5 ответов
Просто добавьте комментарий над ним так:
// Agent is ...
type Agent struct {
name string
categoryId int
}
Этот комментарий потому что ваш Agent
Тип экспортируется, даже если это не атрибуты. Чтобы не экспортировать ваш тип, определите его в нижнем регистре следующим образом:
type agent struct {
name string
categoryId int
}
ВОЗ
Это предупреждение производятся официальным пухом для исходного кода Go - golint. Golint используется как по умолчанию пуха по расширению Go в визуальном редакторе Студийный код.
Зачем
Чтобы понять причину, по которой golint показал это предупреждение, мы можем обратиться к разделу " Комментарии " в "Эффективном Go" (официальном документе, который дает советы по написанию понятного идиоматического кода Go). Вот цитата по теме:
Каждое экспортированное (с заглавной буквы) имя в программе должно иметь документ-комментарий.
Но это действительно может быть раздражающим, если вы склонны к записи самодокументированна коде (то есть намерение ясно из названия самого и т.д.).
Решение
Помимо уже предложенных решений, вы можете начать использовать альтернативный и более продвинутый golangci-lint, который представляет собой агрегатор Go linters. По умолчаниюgolint отключен, поэтому это раздражающее предупреждение об отсутствии комментариев к документу не срабатывает. Конечно, вы можете включить это предупреждение, если хотите, используя соответствующие флаги (см.--exclude strings
а также --exclude-use-default
).
Возможность смены линтера также упоминается на странице описания расширения Go:
Как изменить инструмент lint для расширения Go в VS Code
Чтобы изменить инструмент lint в VS Code, выполните следующие действия.
1) Выберите " Настроить параметры расширения " в меню управления расширениями Go:
2) Выберите "golangci-lint" из соответствующего раскрывающегося списка:
3) Чтобы VS Code не зависал в результате использования этого мощного линтера, добавьте--fast
flag, как описано в инструкциях "Интеграция редактора".
Для этого вам нужно перейти на страницу конфигурации Go Extension (как на шаге 1), открыть settings.json
файл и добавьте соответствующую конфигурацию, как показано на скриншотах ниже:
NB! Вот цитата из " golangci-пух " FAQ:
Почему запуск с --fast медленный при первом запуске?
Поскольку при первом запуске кэшируется информация о типе. Все последующие запуски будут быстрыми. Обычно эта опция используется во время разработки на локальной машине, и компиляция уже была выполнена.
Вы можете решить эту проблему, просто добавив комментарий над именем функции. Пример ниже:
ArrayBasic1 - функция для вычисления массива
func ArrayBasic1() {
x := [5]int{1: 10, 2: 20, 3: 30}
fmt.Println("value from arraybasic1", x)
}
Официально это рекомендация по проверке языка, которую нельзя отключать. С 2016 года по этому поводу шла долгая дискуссия, но, похоже, она зашла в тупик.
Если вы все равно хотите это сделать,--exclude
принимает значения регулярных выражений. Таким образом, вы можете запустить lint из командной строки, игнорируя это конкретное правило.
golangci-lint run --exclude="\bexported \w+ (\S*['.]*)([a-zA-Z'.*]*) should have comment or be unexported\b"
package main
import (
"fmt"
)
type population int
func main() {
var s population
s = population(572)
fmt.Println("Sleepy Creek County population:", s)
fmt.Println("Congragulations, Kevin and Anna! It's a girl:")
s++
fmt.Println("Sleepy Creek County population:", s)
}