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