Énoncé du problème
La création d'une structure hiérarchique de structures peut être un défi dans Go en raison à son manque d’héritage explicite. L'implémentation AST du compilateur Go utilise des méthodes vides pour représenter les interfaces, ce qui soulève des questions sur sa nature idiomatique et sa complexité potentielle.
Solution idiomatique
Bien que Go ne prenne pas en charge l'héritage traditionnel , il propose des constructions alternatives pour représenter les hiérarchies :
type Object interface { object() } type ObjectImpl struct {} func (o *ObjectImpl) object() {} type Immovable interface { Object immovable() } type ImmovableImpl struct { ObjectImpl // Embed ObjectImpl } func (o *Immovable) immovable() {} type Building struct { ImmovableImpl // Embed ImmovableImpl // Building-specific fields }
Dans cette approche, Building hérite automatiquement des méthodes d'Object et Immovable sans avoir besoin de méthodes vides explicites.
Réduction des méthodes vides
Bien que les méthodes vides soient utiles pour documenter et appliquer des contraintes de type, elles peuvent être réduites en utilisant la méthode intégration :
En résumé, la création d'une hiérarchie de structures idiomatique dans Go implique d'utiliser soigneusement les interfaces intégrées et l'intégration de méthodes pour établir tapez des relations et appliquez des contraintes.
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!