Comportement commun pour les collections de tranches
Dans Go, travailler avec des collections de tranches de différents types peut présenter des défis lors de la mise en œuvre de fonctionnalités communes. Cela est particulièrement vrai lorsque des éléments doivent être convertis entre types à des fins de comparaison et de traitement.
Prenons le cas du travail avec des intervalles semi-ouverts, qui représentent des périodes dans le temps avec un point de départ défini. Il existe plusieurs types d'intervalles semi-ouverts, tels que ClockInterval (limité à un jour) et Période (limité à l'existence de l'univers).
Généralement , vous créeriez des tranches de ces différents types d'intervalles et nécessiteriez une fonction commune pour trouver l'intervalle englobant pour une heure donnée, quel que soit l'intervalle type.
Une approche, comme démontré dans le code référencé, consiste à convertir manuellement chaque tranche en un type commun avant d'appliquer la fonction d'intervalle englobante. Cependant, cette méthode nécessite des conversions explicites pour chaque nouveau type d'intervalle ajouté.
Considérations sur la conversion
La conversion directe entre des tranches de types différents n'est pas prise en charge dans Go. L'approche correcte consiste à créer une nouvelle tranche et à boucler dessus, en convertissant chaque élément individuellement. Cela peut être optimisé en pré-attribuant la nouvelle tranche.
Composition vs héritage
La composition est une approche alternative pour définir un comportement commun pour les collections de tranches. Au lieu d'un type de tranche unique, vous pouvez définir un type de base qui encapsule les fonctionnalités communes et y stocke des tranches de différents types. Cela permet l'implémentation de la fonction d'intervalle englobante une seule fois, dans le type de base, et l'accès à la tranche interne via des fonctions pratiques.
Cette approche comporte des compromis. Bien qu'il évite la duplication de code, il introduit le besoin de fonctions pratiques supplémentaires pour interagir avec la tranche interne et peut être moins efficace pour des cas d'utilisation spécifiques.
Dans Go, il est courant de dupliquer du code pour différents types dans certains scénarios. En effet, le langage favorise la sécurité des types explicites et la séparation des préoccupations, plutôt qu'une forte dépendance à l'héritage et aux classes abstraites comme dans les paradigmes de programmation orientée objet.
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!