Неиспользуемая переменная с go и gwan

Go компилятор жалуется на неиспользуемую переменную и импорт. Сценарии go не могут быть запущены в gwan, если обнаружен какой-либо неиспользуемый var/script.

В этом случае gwan выдает ошибку 404, если работает... или просто не может быть запущен

Есть способ избежать такого поведения?

2 ответа

Решение

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

РЕДАКТИРОВАТЬ: C/P из FAQ: Могу ли я прекратить эти жалобы по поводу моей неиспользованной переменной / импорта?

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

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

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

Есть две причины отсутствия предупреждений. Во-первых, если стоит пожаловаться, стоит исправить в коде. (И если это не стоит исправлять, упоминать не стоит.) Во-вторых, компилятор генерирует предупреждения, побуждающие реализацию предупреждать о слабых случаях, которые могут вызвать компиляцию, и маскировать реальные ошибки, которые следует исправить.

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

import "unused"

// This declaration marks the import as used by referencing an
// item from the package.
var _ = unused.Item  // TODO: Delete before committing!

func main() {
        debugData := debug.Profile()
        _ = debugData // Used only during debugging.
        ....
}

Это дублирующий вопрос о языке Go, см.

Go: ошибка при объявлении и неиспользовании переменной

Компилятор Go лечит "unused variable" как фатальная ошибка. Это то, что все другие языки рассматривают как предупреждение, поэтому G-WAN останавливается, чтобы позволить вам исправить ошибки скрипта.

Здесь G-WAN ничего не может сделать, чтобы помочь вам: вы должны использовать Go, как и ожидалось.

Другие вопросы по тегам