Агент экспортированного типа должен иметь комментарий или быть не экспортированным.

Я попробовал этот код в Голанге

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 не зависал в результате использования этого мощного линтера, добавьте--fastflag, как описано в инструкциях "Интеграция редактора".

Для этого вам нужно перейти на страницу конфигурации 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)
}
Другие вопросы по тегам