Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Variáveis com o mesmo nome

Nesse trecho de código, tivemos duas vezes a variável 'err', existem algum modo de conseguirmos diferenciar as duas já que os nomes são iguais? Tem algo a ver com a compilação ser sequencial? Caso eu queria acessar a ERR que apareceu na primeira vez por exemplo isso seria possível?

func leSitesDoArquivo() []string {

    var sites []string

    arquivo, err := os.Open("sites.txt")
    if err != nil {
        fmt.Println("Ocorreu um erro:", err)
    }

    leitor := bufio.NewReader(arquivo)

    linha, err := leitor.ReadString('\n')
    if err != nil {
        fmt.Println("Ocorreu um erro:", err)
    }

    fmt.Println(linha)

    return sites
}
2 respostas
solução!

Oi Ravel

Uma vez sobreescrito a variável err por outro valor você não conseguirá acessar o valor antigo. O que dá para fazer é deixar as variáveis err com nomes diferentes, exemplo:

func leSitesDoArquivo() []string {

    var sites []string

    arquivo, err1 := os.Open("sites.txt")
    if err1 != nil {
        fmt.Println("Ocorreu um erro:", err1)
    }

    leitor := bufio.NewReader(arquivo)

    linha, err2 := leitor.ReadString('\n')
    if err2 != nil {
        fmt.Println("Ocorreu um erro:", err2)
    }

    fmt.Println(linha)

    return sites
}

Ah interessante, como estavamos fazendo uma atribuição de ':=' eu achei que isso acabava tentando gerar uma nova instância da variavel ou algo desse tipo. Muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software