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

[Dúvida] É possível alterar o comportamento de retorno para valores não definidos?

No video "Utilizando Structs" o instrutor definiu o tipo Pizza para a variável toscana, executou o programa sem atribuir os valores à variável e o retorno foi {0 0}. No caso do type Pizza, tem alguma forma de configurar o Go para que seja retornado um erro quando a variável é do tipo Pizza mas nenhum valor for atribuido??

1 resposta
solução!

Olá Gabriel! Tudo bem?

No Go, quando você define uma variável de um tipo struct como Pizza e não atribui valores a ela, os campos da struct são inicializados com seus valores zero. Isso significa que os campos numéricos serão zero, strings serão vazias, e assim por diante. Infelizmente, o Go não possui um mecanismo embutido para lançar um erro automaticamente quando uma struct é inicializada sem valores.

No entanto, você pode implementar uma lógica personalizada para verificar se os campos da struct foram preenchidos e, se não, retornar um erro. Uma maneira de fazer isso é criar um método para a struct que verifica se os campos estão nos valores zero e, caso estejam, retorna um erro.

Aqui está um exemplo de como você pode fazer isso:

package main

import (
    "errors"
    "fmt"
)

type Pizza struct {
    ID    int
    Nome  string
    Preco float64
}

// Método para verificar se a Pizza foi inicializada corretamente
func (p Pizza) Validar() error {
    if p.ID == 0 && p.Nome == "" && p.Preco == 0 {
        return errors.New("a pizza não foi inicializada com valores")
    }
    return nil
}

func main() {
    var toscana Pizza

    // Verificar se a pizza foi inicializada
    if err := toscana.Validar(); err != nil {
        fmt.Println("Erro:", err)
    } else {
        fmt.Println(toscana)
    }
}

Neste exemplo, o método Validar verifica se todos os campos da struct Pizza estão nos valores zero e retorna um erro se estiverem. Assim, ao tentar imprimir a pizza sem valores, você receberá uma mensagem de erro.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.