implementación idiomática de jerarquías estructurales complejas en Go
La falta de herencia y el soporte para la integración de la incrustación de la representación de jerarquías estructurales complejas no triviales. El uso del compilador GO de métodos vacíos en su implementación AST ha planteado preguntas sobre su eficacia.
entendiendo métodos vacíos
pero no esenciales, los métodos vacíos tienen dos propósitos clave:
[&] [&] [&] [&] [&]] Campos y métodos, creando una forma de herencia. Al integrar las estructuras apropiadas de una manera jerárquica, podemos reducir la necesidad de métodos vacíos.
Herochy-movable-movable objeto
Considere la siguiente jerarquía: Object --Inamovible ----Edificio ----Montaña --Móvil ----Auto ----- Bike
Implementación del objeto:
Object --Immovable ----Building ----Mountain --Movable ----Car ----Bike
Tipo de interfaz de objeto { objeto() } Escriba ObjectImpl struct {} Func (o *objectImpl) object () {}
Implementación imperable:Object --Immovable ----Building ----Mountain --Movable ----Car ----Bike
Interfaz inmovable { Objeto inamovible() } escriba inmovableImpl struct { ObjectImpl // Implementación de objetos integrados } Func (i *ImmovableImpl) Immovable () {}
Building Implementation:Object --Immovable ----Building ----Mountain --Movable ----Car ----Bike
type Building struct { ImmovableImpl // Implementación inmunable integrada // campos adicionales específicos del edificio }
MOVABLE Implementación:Object --Immovable ----Building ----Mountain --Movable ----Car ----Bike
escriba interfaz móvil { Objeto móvil() } escriba mOvableImpl struct { ObjectImpl // Implementación de objetos integrados } Func (m *MovableImpl) MOVABLE () {}
Implementación de automóvil:Object --Immovable ----Building ----Mountain --Movable ----Car ----Bike
escriba Car struct { MovableImpl // implementación móvil integrada // campos adicionales específicos de automóvil }
Usage de ejemplo:Object --Immovable ----Building ----Mountain --Movable ----Car ----Bike
// El edificio no se puede asignar a una variable de tipo móvil porque no implementa la interfaz móvil. var mudable Movable = edificio {} // Sin embargo, se puede asignar a una variable tipo objeto porque tanto el objeto de implementación inmovible y móvil. Var objeto objeto = edificio {}
ventajas de incrustación:Object --Immovable ----Building ----Mountain --Movable ----Car ----Bike
número reducido de métodos vacíos, lo que lleva a un código más limpio y más sencillo. tipos, simplificando la implementación.
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