Ответ 1
Здесь полезен трюк var _ = fmt.Printf
.
По умолчанию Go обрабатывает неиспользуемый импорт как ошибку, заставляя вас удалить импорт. Я хочу знать, есть ли какая-то надежда изменить это поведение. например уменьшая его до предупреждения.
Я обнаружил, что эта проблема крайне раздражает, препятствуя мне наслаждаться кодированием в Go. Например, я тестировал некоторый код, отключая сегмент/функцию. Некоторые функции из lib больше не используются (например, fmt, errors, whatever), но мне нужно будет снова включить функцию после небольшого тестирования. Теперь программа не будет компилироваться, если я не удалю этот импорт. И несколько минут спустя мне нужно повторно импортировать lib. Я делал этот процесс снова и снова при разработке программы GAE.
TBH, это самая глупая вещь, которую я даже видел на языке программирования. Если это не преимущество производительности в GAE, я бы даже не коснулся Go.
Здесь полезен трюк var _ = fmt.Printf
.
У меня та же проблема. Я понимаю аргументы в пользу того, почему они внедрили язык, чтобы запретить неиспользуемые импорт и переменные, но я лично считаю эту функцию раздражающей при написании моего кода. Чтобы обойти это, я изменил свой компилятор, чтобы разрешить необязательные флаги для разрешения неиспользуемых переменных и импорта в моем коде.
Если вы заинтересованы, вы можете увидеть это на https://github.com/dtnewman/modified_golang_compiler.
Теперь я могу просто запустить код с помощью команды go run -gcflags '-unused_pkgs' test.go, и он не будет использовать эти ошибки "неиспользуемого импорта". Если я оставлю эти флаги, то он вернется к умолчанию, чтобы не разрешать неиспользуемые импорты.
Для этого потребовалось всего несколько простых изменений. Go purists, вероятно, не будут довольны этими изменениями, поскольку есть веские причины не допускать неиспользуемые переменные/импорт, но я лично согласен с вами в том, что этот вопрос делает его гораздо менее приятным для кода в Go, поэтому я внес эти изменения в свой компилятор.
Используйте goimports. Это в основном вилка go fmt, написанная Брэдом Фицпатриком, и теперь включена в пакеты инструментов go. Вы можете настроить редактор для его запуска при каждом сохранении файла. Вам больше не придется беспокоиться об этой проблеме.
Добавление подчеркивания _ перед именем пакета игнорирует неиспользуемую ошибку импорта.
Вот пример того, как вы могли его использовать:
import (
"log"
"database/sql"
_"github.com/go-sql-driver/mysql"
)
Чтобы импортировать пакет исключительно для его побочных эффектов (инициализация), используйте пустой идентификатор как явное имя пакета.
Подробнее о https://golang.org/ref/spec#Import_declarations
Если вы используете пакет fmt
для общей печати на консоль при разработке и тестировании, вы можете найти лучшее решение в log.
Используйте if false { ... }
, чтобы прокомментировать какой-то код. Код внутри фигурных скобок должен быть синтаксически правильным, но в противном случае может быть бессмысленным кодом.
поставьте это поверх своего документа и забудьте о неиспользуемых импортах
import ("fmt";"bufio";"os";"path/filepath")
func iiiiiiiiiiii(i interface{}) {
fmt.Println("");i=bufio.Writer{};i=os.File{};filepath.IsAbs("")
}