"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como evitar a repetição de código para funções com campos compartilhados em Golang?

Como evitar a repetição de código para funções com campos compartilhados em Golang?

Publicado em 23/12/2024
Navegar:224

How to Avoid Code Repetition for Functions with Shared Fields in Golang?

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.

Tutorial mais recente Mais>

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