Подтвердить что ты не робот

Как отключить неиспользованную ошибку импорта Golang

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

Я обнаружил, что эта проблема крайне раздражает, препятствуя мне наслаждаться кодированием в Go. Например, я тестировал некоторый код, отключая сегмент/функцию. Некоторые функции из lib больше не используются (например, fmt, errors, whatever), но мне нужно будет снова включить функцию после небольшого тестирования. Теперь программа не будет компилироваться, если я не удалю этот импорт. И несколько минут спустя мне нужно повторно импортировать lib. Я делал этот процесс снова и снова при разработке программы GAE.

TBH, это самая глупая вещь, которую я даже видел на языке программирования. Если это не преимущество производительности в GAE, я бы даже не коснулся Go.

4b9b3361

Ответ 1

Здесь полезен трюк var _ = fmt.Printf.

Ответ 2

У меня та же проблема. Я понимаю аргументы в пользу того, почему они внедрили язык, чтобы запретить неиспользуемые импорт и переменные, но я лично считаю эту функцию раздражающей при написании моего кода. Чтобы обойти это, я изменил свой компилятор, чтобы разрешить необязательные флаги для разрешения неиспользуемых переменных и импорта в моем коде.

Если вы заинтересованы, вы можете увидеть это на https://github.com/dtnewman/modified_golang_compiler.

Теперь я могу просто запустить код с помощью команды go run -gcflags '-unused_pkgs' test.go, и он не будет использовать эти ошибки "неиспользуемого импорта". Если я оставлю эти флаги, то он вернется к умолчанию, чтобы не разрешать неиспользуемые импорты.

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

Ответ 3

Используйте goimports. Это в основном вилка go fmt, написанная Брэдом Фицпатриком, и теперь включена в пакеты инструментов go. Вы можете настроить редактор для его запуска при каждом сохранении файла. Вам больше не придется беспокоиться об этой проблеме.

Ответ 4

Добавление подчеркивания _ перед именем пакета игнорирует неиспользуемую ошибку импорта.

Вот пример того, как вы могли его использовать:

import (
    "log"
    "database/sql"
    _"github.com/go-sql-driver/mysql"
)

Чтобы импортировать пакет исключительно для его побочных эффектов (инициализация), используйте пустой идентификатор как явное имя пакета.

Подробнее о https://golang.org/ref/spec#Import_declarations

Ответ 5

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

Ответ 6

Используйте if false { ... }, чтобы прокомментировать какой-то код. Код внутри фигурных скобок должен быть синтаксически правильным, но в противном случае может быть бессмысленным кодом.

Ответ 7

поставьте это поверх своего документа и забудьте о неиспользуемых импортах

import ("fmt";"bufio";"os";"path/filepath")
func iiiiiiiiiiii(i interface{}) {
fmt.Println("");i=bufio.Writer{};i=os.File{};filepath.IsAbs("")
}