Terminei o curso "Go: Orientação a Objetos", porém nas aulas o professor passava todas funções usava por um momento e as deixava de canto, eu fui adaptando para tentar fazer um sistema que rode no terminal com switch, for, scan e etc.
O programa estava funcionando completamente certo até que o professor separou as contas em dois tipos, conta corrente e conta poupança. Considerando que as 2 conta tem exatamente os mesmos campos, como eu posso fazer para permitir uma transferência entre as duas contas?
Inicialização das contas em formato de variáveis
conta1 := contas.ContaCorrente{Titular: clientes.Titular{
Nome: "Guilherme",
CPF: "546.241.138-37",
Profissao: "Front-End Developer"},
NumeroAgencia: 123, NumeroDaConta: 123456}
conta2 := contas.ContaPoupanca{Titular: clientes.Titular{
Nome: "André",
CPF: "243.277.777-81",
Profissao: "Software Engineer"},
NumeroAgencia: 132, NumeroDaConta: 654321}
Case que cuida da transferência
case 3:
var transferencia float64
fmt.Println("Digite o valor da transferência:")
_, err := fmt.Scan(&transferencia)
if err != nil {
fmt.Println("Erro com a transferência:", err)
}
conta2.Transfere(transferencia, &conta1)
fmt.Println(conta1)
fmt.Println(conta2)
Função transfere dentro de contaPoupanca e contaCorrente
func (conta *ContaPoupanca) Transfere(transferencia float64, contaDestino *ContaCorrente) bool {
if conta.saldo > transferencia && transferencia > 0 {
conta.saldo -= transferencia
contaDestino.Depositar(transferencia)
return true
} else {
fmt.Println("Saldo insuficiente!")
return false
}
}
func (conta *ContaCorrente) Transfere(transferencia float64, contaDestino *ContaCorrente) bool {
if conta.saldo > transferencia && transferencia > 0 {
conta.saldo -= transferencia
contaDestino.Depositar(transferencia)
return true
} else {
fmt.Println("Saldo insuficiente!")
return false
}
}
Link para repositório do Github: https://github.com/GuilhermeMViana/Banco-OOP