Dans la conception d'une hiérarchie de structures, Go propose deux approches pour organiser les relations de types : l'intégration et les interfaces avec des structures vides. méthodes.
Approche "méthode vide" de Go utilise des interfaces et des méthodes vides pour représenter les hiérarchies de types. Une méthode vide est une méthode qui n’a aucune implémentation ; son but est uniquement de marquer qu'un type satisfait une interface.
Dans l'exemple fourni, où les types Object, Immovable, Building, Movable, Car et Bike forment une hiérarchie, l'implémentation suivante utilisant des interfaces avec des espaces vides les méthodes seraient considérées comme idiomatiques :
type Object interface { object() } type Immovable interface { Object immovable() } type Building struct { ... } type Mountain struct { ... } type Movable interface { Object movable() } type Car struct { ... } type Mountain struct { ... } func (*Building) object() {} func (*Mountain) object() {} func (*Car) object() {} func (*Bike) object() {} func (*Building) immovable() {} func (*Mountain) immovable() {} func (*Car) movable() {} func (*Bike) movable() {}
Cette méthode documente explicitement les relations de type et empêche l'affectation de incompatibles types.
Go prend également en charge l'intégration, qui permet à une structure d'hériter des méthodes d'une autre structure. En utilisant l'intégration, la hiérarchie pourrait être représentée comme suit :
type ObjectImpl struct {} func (o *ObjectImpl) object() {} type ImmovableImpl struct { *ObjectImpl // Embed ObjectImpl struct } func (o *Immovable) immovable() {} type Building struct { *ImmovableImpl // Embed ImmovableImpl struct } type MovableImpl struct { *ObjectImpl // Embed ObjectImpl struct } func (o *Movable) movable() {} type Car struct { *MovableImpl // Embed MovableImpl struct } type Bike struct { *MovableImpl // Embed MovableImpl struct }
L'intégration fournit une approche alternative qui réduit le nombre de méthodes vides en tirant parti du mécanisme de type héritage de Go.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!