1
resposta

[Dúvida] O pacote foi inserido na pasta, mas não é encontrado

Após a aula onde foi solicitado que criássemos uma pasta, e nesta um arquivo contaCorrente.go, e colar o objeto ContaCorrente lá, meu arquivo go, não quer mais executar.

O meu diretorio se encontra da seguinte forma: Arquivo main.go: C:/Users/Username/Downloads/go/src/file/Golang objetos Arquivo contaCorrente.go: C:/Users/Username/Downloads/go/src/file/Golang objetos/contas

Segue código principal:

package main

import (
    "conta/contas"
    "fmt"
)

func main() {
    contaJoe := contas.ContaCorrente{}
    contaJoe.Titular = "Joe"
    contaJoe.NumeroAgencia = 89
    contaJoe.NumeroConta = 1234
    contaJoe.Saldo = 125.50

    contaJack := contas.ContaCorrente{}
    contaJack.Titular = "Joe"
    contaJack.NumeroAgencia = 89
    contaJack.NumeroConta = 1234
    contaJack.Saldo = 125.50

    status, valor := contaJoe.Transferencia(100, &contaJack)
    fmt.Println(status, valor)

    fmt.Println(contaJack.saldo)
}

Segue código do pacote:

package contas

type ContaCorrente struct { //estrutura
    Titular       string
    NumeroAgencia int
    NumeroConta   int
    Saldo         float64
}

//Deposito
func (c *ContaCorrente) Depositar(valorDeposito float64) (string, float64) {
    // o c é irrelevante, pois poderia ser qualquer outra letra ou texto
    // por questões de Golang, utiliza-se o c

    //verifica se o valor do deposito é maior que zero
    podeDepositar := valorDeposito > 0
    if podeDepositar {
        c.Saldo += valorDeposito
        status := "Valor depositado com sucesso!"
        return status, c.Saldo
    } else {
        status := "Favor digitar um valor de deposito válido!"
        return status, c.Saldo
    }
}

//Saque
func (c *ContaCorrente) Sacar(valorSaque float64) (string, float64) {
    // o c é irrelevante, pois poderia ser qualquer outra letra ou texto
    // por questões de Golang, utiliza-se o c

    //verifica se o valor do saque é maior que 0 e se o saque é maior que o Saldo
    podeSacar := valorSaque > 0 && valorSaque <= c.Saldo
    if podeSacar {
        c.Saldo -= valorSaque
        status := "O saque foi realizado com sucesso!"
        return status, c.Saldo
    } else {
        status := "Saque não realizado! \nSaldo insuficiente!"
        return status, c.Saldo
    }
}

//Transferencia
func (c *ContaCorrente) Transferencia(valorTransferencia float64, contaDestino *ContaCorrente) (string, float64) {
    podeTransferir := valorTransferencia > 0 && valorTransferencia <= c.Saldo
    if podeTransferir {
        c.Saldo -= valorTransferencia
        contaDestino.Depositar(valorTransferencia)
        status := "Transferencia realizada"
        return status, c.Saldo
    } else {
        status := "Transferencia não realizada! \nSaldo insuficiente"
        return status, c.Saldo
    }
}

Minhas tentativas de corrigir este erro foram diversas, e após algum período comecei a documentar para evitar ficar andando em circulos. Segue tentativas:

  • O nome do usuário foi trocado por username somente para envio no forum
"C:\Users\Username\Downloads\go\src\file\Golang objetos\contas" 
>> ERRO: main.go:4:7: illegal character U+0073 's' in escape sequence


"C:/Users/Username/Downloads/go/src/file/Golang objetos/contas"
>> ERRO: main.go:4:2: invalid import path: "C:/Users/Username/Downloads/go/src/file/Golang objetos/contas"


"Golang objetos/contas"
>> ERRO: main.go:4:2: invalid import path: "Golang objetos/contas"


"Golang objetos\contas"
>> ERRO: main.go:4:18: unknown escape sequence


"contas"
>> ERRO: main.go:4:2: package contas is not in GOROOT (C:\Program Files\Go\src\contas)


"contaCorrente"
>> ERRO: # command-line-arguments
.\main.go:9:14: undefined: contas
.\main.go:15:15: undefined: contas
*Exclui o import pois não foi utilizado


"/contas"
>> ERRO: main.go:4:2: malformed import path "/contas": empty path element


"/contas/contas"
>> ERRO: main.go:4:2: malformed import path "/contas/contas": empty path element


"\contas"
>> ERRO: main.go:4:4: unknown escape sequence
1 resposta

Olá, tudo bem? Vamos tentar corrigir isso.

Primeiro, verifique se a estrutura de diretórios está correta. A estrutura deve ser assim:

C:/Users/Username/Downloads/go/src/file/Golang objetos/
|-- main.go
|-- contas/
|   |-- contaCorrente.go

Agora, corrija o import no arquivo main.go. Você deve importar o pacote usando o caminho relativo ao diretório raiz do seu projeto. Supondo que o arquivo main.go está na raiz do projeto, você deve importar o pacote contas da seguinte forma:

import (
    "./contas"
    "fmt"
)

Isso deve resolver o problema da importação. Certifique-se de que seu código esteja organizado da maneira correta e tente executar novamente. Certifique-se também de que a pasta Golang objetos não contém espaços no nome, pois isso pode causar problemas em alguns casos.

Além disso, verifique se todos os arquivos estão salvos corretamente e se não há erros de digitação nos nomes dos arquivos ou pastas. Se tudo estiver configurado corretamente, seu código deve funcionar sem problemas.

Se você utiliza o VSCode, pode usar a extensão Go que te ajuda nessa parte de imports e outros erros.

Qualquer coisa estarei a disposição :)

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