No final do curso usamos o tipo interface para realizar o contrato entre os métodos sacar da conta corrente e conta poupança, porém quando eu fui usar conforme o exemplo (pagar um boleto com cada uma das contas), somente na conta poupança precisei usar o & na variavel da conta, na conta corrente não. Eu dupliquei o arquivo ContaCorrente.go e renomeei tudo para ContaPoupança.
package main
import (
"fmt"
"learn-go-banco/clientes"
cc "learn-go-banco/contas"
)
func main() {
clienteDionathan := clientes.Titular{Nome: "Dionathan", CPF: "123.123.123.00", Profissao: "DevOps"}
var contadoDionathan *cc.ContaCorrente
contadoDionathan = new(cc.ContaCorrente)
contadoDionathan.Titular = clienteDionathan
contadoDionathan.NumAgencia = 123
contadoDionathan.NumConta = 123123
contadoDionathan.Depositar(8000)
//poupanca
contadaMae := cc.ContaPoupanca{}
contadaMae.Depositar(2000)
fmt.Println(contadaMae.VerSaldo())
//interface
PagarBoleto(&contadaMae, 100)
fmt.Println(contadaMae.VerSaldo())
PagarBoleto(contadoDionathan, 1000)
fmt.Println(contadoDionathan.VerSaldo())
}
// Faz um contrato com os metodos iguais
type verificarConta interface {
Sacar(valor float64) string
}
func PagarBoleto(conta verificarConta, valorDoBoleto float64) {
conta.Sacar(valorDoBoleto)
}
Poderiam me indicar o que eu posso ter feito de errado?