Pergunta

Estou aprendendo o novo idioma do Google Ir.Só estou tentando coisas e notei que, se você declarar uma variável e não fizer nada com ela o compilador Go (8g no meu caso) não consegue
compilar com este erro: hello.go:9: error declared and not used.Fiquei surpreso com isso, já que a maioria dos compiladores de linguagem apenas avisar você sobre variáveis ​​​​não utilizadas, mas ainda compiladas.

Existe alguma maneira de contornar isso?Verifiquei a documentação do compilador e não vejo nada que possa mudar esse comportamento.Existe uma maneira de simplesmente excluir error para que isso seja compilado?

package main

import "fmt"
import "os"

func main()
{
     fmt.Printf("Hello World\n");
     cwd, error := os.Getwd();
     fmt.Printf(cwd);
}
Foi útil?

Solução

Você poderia tentar isso:

cwd, _ := os.Getwd();

mas parece que seria melhor manter o erro como na resposta de Jurily para saber se algo deu errado.

Outras dicas

isso pode tornar o desenvolvimento um pouco doloroso.às vezes eu executo código que tem variáveis ​​declaradas mas não usadas (mas vai ser usado).

nesses casos eu simplesmente faço isso:

fmt.Printf("%v %v %v",algumvar1,algumvar2,algumvar3)

e aí, eles são “usados”.

gostaria de ver um sinalizador para as ferramentas Go que me permita suprimir esse erro durante o desenvolvimento.

Isto funciona?

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

Você pode descobrir qual é o erro importando "fmt" e usando

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

O que ele imprime?

Se você realmente deseja apenas remover o erro de compilação, você pode tentar algo como 'a = a' ou 'error = error'.

Os argumentos vindos de algumas pessoas aqui, afirmando que tais erros de compilação são ótimos porque evitam muito lixo, são verdadeiros para a maioria das situações, portanto, você deve evitar tais construções.Por outro lado, gosto bastante de testar se o código que escrevo realmente compila!E nesse caso é bom não ter que remover todas as variáveis ​​declaradas e não utilizadas.Portanto, use a construção 'a = a' raramente e não os deixe aí!

Eu tive a mesma situação que você.De documentos:

Posso interromper essas reclamações sobre minha variável/importação não utilizada?

A presença de uma variável não utilizada pode indicar um bug, enquanto as importações não utilizadas apenas retardam a compilação.Acumule importações não utilizadas suficientes em sua árvore de código e as coisas podem ficar muito lentas.Por essas razões, Go não permite nenhum dos dois.

Ao desenvolver código, é comum criar essas situações temporariamente e pode ser chato ter que editá-las antes da compilação do programa.

Alguns pediram uma opção do compilador para desativar essas verificações ou pelo menos reduzi-las a avisos.Essa opção não foi adicionada porque as opções do compilador não devem afetar a semântica da linguagem e porque o compilador Go não relata avisos, apenas erros que impedem a compilação.

Existem duas razões para não haver avisos.Primeiro, se vale a pena reclamar, vale a pena consertar no código.(E se não vale a pena consertar, não vale a pena mencionar.) Em segundo lugar, fazer com que o compilador gere avisos incentiva a implementação a alertar sobre casos fracos que podem tornar a compilação barulhenta, mascarando erros reais que deve ser consertado.

No entanto, é fácil resolver a situação.Use o identificador em branco para permitir que coisas não utilizadas persistam enquanto você desenvolve.

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.
    ....
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top