Evitando a repetição de código para funções com campos compartilhados em Golang
Para evitar a duplicação de código ao escrever funções para múltiplas estruturas com campos idênticos, considere o seguinte abordagem:
Em vez de definir funções separadas para cada estrutura, crie um tipo personalizado para o campo compartilhado, como String de versão. Este tipo pode atuar como um receptor de método para a função que você deseja implementar.
type Version string
func (v Version) PrintVersion() {
fmt.Println("Version is", v)
}
Em suas estruturas, inclua o tipo personalizado como um campo usando composição:
type Game struct {
Name string
MultiplayerSupport bool
Genre string
Version
}
type ERP struct {
Name string
MRPSupport bool
SupportedDatabases []string
Version
}
Agora, você pode acessar e imprimir o campo Versão de ambas as estruturas usando o método anexado ao tipo personalizado:
func main() {
g := Game{
"Fear Effect",
false,
"Action-Adventure",
"1.0.0",
}
g.PrintVersion()
// Version is 1.0.0
e := ERP{
"Logo",
true,
[]string{"ms-sql"},
"2.0.0",
}
e.PrintVersion()
// Version is 2.0.0
}
Essa abordagem permite evitar a repetição de código enquanto mantém a capacidade de imprimir o campo Versão de diferentes estruturas. Ao definir a função como um método de um tipo personalizado, você garante que a mesma implementação seja usada para todas as estruturas que incorporam esse tipo.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3