"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo evitar la repetición de código para funciones con campos compartidos en Golang?

¿Cómo evitar la repetición de código para funciones con campos compartidos en Golang?

Publicado el 2024-12-23
Navegar:873

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

Evitar la repetición de código para funciones con campos compartidos en Golang

Para evitar la duplicación de código al escribir funciones para múltiples estructuras con campos idénticos, considere la siguiente enfoque:

En lugar de definir funciones separadas para cada estructura, cree un tipo personalizado para el campo compartido, como la cadena de versión. Este tipo puede actuar como un receptor de método para la función que desea implementar.

type Version string

func (v Version) PrintVersion() {
    fmt.Println("Version is", v)
}

En sus estructuras, incluya el tipo personalizado como un campo usando la composición:

type Game struct {
    Name               string
    MultiplayerSupport bool
    Genre              string
    Version
}

type ERP struct {
    Name               string
    MRPSupport         bool
    SupportedDatabases []string
    Version
}

Ahora puede acceder e imprimir el campo Versión desde ambas estructuras utilizando el método adjunto al 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

}

Este enfoque le permite evitar la repetición de código mientras mantiene la capacidad de imprimir el campo Versión desde diferentes estructuras. Al definir la función como un método de un tipo personalizado, garantiza que se utilice la misma implementación para todas las estructuras que incrustan ese tipo.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3