Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

untyped string constant) as clientes.Titular value in struct

Boa noite!

Ao realizar a tarefa pelo professor ocorreu o seguinte erro. Primeiramente, pra contextualizar, eu criei a classe cliente dentro do pacote clientes com a seguinte estrutura

package clientes

type Titular struct {
    Nome      string
    CPF       string
    Profissao string
}

e minha classe contaCorrente esta da seguinte forma

package contas

import "github.com/golangbanco/clientes"

type ContaCorrente struct {
    Titular       clientes.Titular
    NumeroAgencia int
    NumeroConta   int
    Saldo         float64
}

func (c *ContaCorrente) Sacar(valorDoSaque float64) string {
    podeSacar := valorDoSaque <= c.Saldo && valorDoSaque > 0
    if podeSacar {
        c.Saldo -= valorDoSaque
        return "Saque realizado"
    } else {
        return "Saldo insuficiente"
    }
}

func (c *ContaCorrente) Depositar(valorDoDeposito float64) (string, float64) {
    if valorDoDeposito > 0 {
        c.Saldo += valorDoDeposito
        return "Deposito efetuado no valor de R$:", valorDoDeposito
    } else {
        return "Deposito precisa ser maior que R$", valorDoDeposito
    }
}

func (c *ContaCorrente) Transferir(valorATransferir float64, contaDestino *ContaCorrente) bool {
    if valorATransferir < c.Saldo && valorATransferir > 0 {
        c.Saldo -= valorATransferir
        contaDestino.Depositar(valorATransferir)
        return true
    } else {
        return false
    }
}

Porém este trecho

package main

import (
    "fmt"

    "github.com/golangbanco/contas"
)

func main() {
    contaDaSilvia := contas.ContaCorrente{Titular: "Silvia", Saldo: 300}
    contaDoGustavo := contas.ContaCorrente{Titular: "Gustavo", Saldo: 100}

    status := contaDaSilvia.Transferir(-200, &contaDoGustavo)

    fmt.Println(contaDaSilvia)
    fmt.Println(contaDoGustavo)

    fmt.Println(status)
}

esta retornando erro na linha onde atribuo titulares as contas. O erro é o citado na postagem

cannot use "Silvia" (untyped string constant) as clientes.Titular value in struct literalcompilerIncompatibleAssign

Poderiam me auxiliar? Obrigado!

1 resposta
solução!

Oi André

a linha abaixo tem um problema, o Titular é uma struct mas você está passando como se fosse uma String:

contas.ContaCorrente{Titular: "Silvia", Saldo: 300}

O correto seria algo como abaixo:

func main() {
    contaDaSilvia := ContaCorrente{
        Titular: Titular{
            Nome:      "silva",
            CPF:       "cpf",
            Profissao: "profissao",
        },
        Saldo: 300,
    }

    contaDoGustavo := ContaCorrente{
        Titular: Titular {
            Nome:      "gustavo",
            CPF:       "cpf",
            Profissao: "profissao",
        },
        NumeroAgencia: 0,
        NumeroConta:   0,
        Saldo:         100,
    }

    status := contaDaSilvia.Transferir(-200, &contaDoGustavo)

    fmt.Println(contaDaSilvia)
    fmt.Println(contaDoGustavo)

    fmt.Println(status)
}

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