Вопрос

Я изучаю новый язык Google Идти. Анкет Я просто пробую вещи и заметил, что если вы объявите переменную и ничего не делаете с ней, компилятор GO (8G в моем случае) не может
Скомпилируйте эту ошибку: hello.go:9: error declared and not used. Анкет Я был удивлен этим, так как большинство языковых компиляторов просто предупреждать Вы о неиспользованных переменных, но все еще компилируете.

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

package main

import "fmt"
import "os"

func main()
{
     fmt.Printf("Hello World\n");
     cwd, error := os.Getwd();
     fmt.Printf(cwd);
}
Это было полезно?

Решение

Вы можете попробовать это:

cwd, _ := os.Getwd();

Но кажется, что было бы лучше сохранить ошибку, как в ответе на жесткой, чтобы вы знали, что что -то пошло не так.

Другие советы

Это может сделать развитие немного боли. Иногда я запускаю код, в котором объявлены переменные, но не используются (но будут использоваться).

В этих случаях я просто делаю это:

fmt.printf (« %v %v %v», somevar1, somevar2, somevar3)

И там они «используются».

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

Это работает?

cwd, error := os.Getwd();
if error == nil {
    fmt.Printf(cwd);
}

Вы можете узнать, что такое ошибка, импортируя «FMT» и используя

cwd, err := os.Getwd();
if err != nil {
    fmt.Printf("Error from Getwd: %s\n", err)
}

Что он печатает?

Если вы действительно просто хотите удалить ошибку компиляции, вы можете попробовать что -то вроде «a = a 'или' error = error '.

Аргументы, исходящие от некоторых людей здесь, утверждая, что такие ошибки компиляции великолепны, потому что они предотвращают много крутников, являются верными для большинства ситуаций, поэтому вы должны избегать таких конструкций. С другой стороны, я очень люблю проверять, действительно ли код, который я пишу, компилируется! И в этом случае это хорошо, не нужно удалять все объявленные и неиспользованные переменные. Так что используйте конструкцию «a = a» редко и не оставляйте их там!

У меня была такая же ситуация, как и вы. От док:

Могу ли я остановить эти жалобы на мою неиспользованную переменную/импорт?

Наличие неиспользованной переменной может указывать на ошибку, в то время как неиспользованный импорт просто замедляет компиляцию. Накапливайте достаточно неиспользованного импорта в вашем кодовом дереве, и все может стать очень медленным. По этим причинам 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.
    ....
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top