На что проверяет линтер в Go

«На что проверяет линтер в Go» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Линтер в Go (например, golint или staticcheck) проверяет код на соответствие стилю, идиомам и потенциальным ошибкам. Основные проверки:

  1. Стиль именования (публичные сущности с большой буквы, приватные — с маленькой)
  2. Неиспользуемые переменные/импорты
  3. Упрощение кода (например, избыточные else)
  4. Ошибки в форматировании строк (например, fmt.Printf без аргументов)
  5. Потенциальные nil-паники
  6. Некорректные defer-вызовы (например, внутри цикла)
  7. Избыточные type-конверсии

Пример:

// Плохо (линтер предупредит)
var UnusedVar int 

func foo() error {
    if err := bar(); err != nil {
        return err
    } else {  // Лишний else
        return nil
    }
}