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 ✓.