"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que minha variável de erro global não pânico após a inicialização no Go?

Por que minha variável de erro global não pânico após a inicialização no Go?

Postado em 2025-03-23
Navegar:135

Why Doesn't My Global Error Variable Panic After Initialization in Go?

Por que a variável de erro global não pode pânico após a inicialização? Essa discrepância surge de um mal -entendido do escopo variável. f, loaderr: = os.open ("asdasd") se loaderr! = nil { checkerr () } se f! = nil { fmt.println (f.name ()) } }

Esta linha cria uma nova variável local para F e Loaderr. Ele não modifica as variáveis ​​globais definidas fora da função. Assim, quando você chama checkerr (), o loaderr ainda está nulo porque não foi definido em nenhum lugar dentro do escopo da função principal. _, err: = os.open ("asdasd") loaderr = err se loaderr! = nil { checkerr () } }

usando =, você está atribuindo explicitamente o valor da variável de erração local à variável global loadr. Isso permite que a função checkerr () acesse a variável global modificada e acione o pânico. No primeiro exemplo, você pode declarar o Loaderr como uma variável global fora da função principal movendo sua definição:

var loaderr Erro func main () { _, loaderr = os.open ("asdasd") se loaderr! = nil { checkerr () } se f! = nil { fmt.println (f.name ()) } }

func main() {
    f, loadErr := os.Open("asdasd")
    if loadErr != nil {
        checkErr()
    }
    if f != nil {
        fmt.Println(f.Name())
    }
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3