Maison > développement back-end > Golang > Comment puis-je étendre les types personnalisés dans Go tout en préservant les méthodes existantes ?

Comment puis-je étendre les types personnalisés dans Go tout en préservant les méthodes existantes ?

Susan Sarandon
Libérer: 2024-12-07 09:50:11
original
1067 Les gens l'ont consulté

How Can I Extend Custom Types in Go While Preserving Existing Methods?

Préserver les méthodes tout en étendant les types personnalisés

Lorsque vous travaillez avec des types nommés pour le démarshalling JSON, vous pouvez rencontrer le problème d'accès aux méthodes appartenant au type sous-jacent. Par exemple, définir un type nommé StartTime, dérivé de time.Time, et tenter d'accéder à sa méthode Date().

Pour surmonter cette limitation et ajouter des méthodes à un type existant tout en conservant ses méthodes d'origine, intégrer le type existant. Les intégrations offrent un moyen pratique de promouvoir des champs et des méthodes d'un type anonyme intégré vers le nouveau type.

Par exemple :

type StartTime struct {
    time.Time
}
Copier après la connexion

Dans cet extrait, nous intégrons le type time.Time de manière anonyme dans StartTime. Selon la spécification Go pour les types struct, tous les champs et méthodes du champ anonyme sont promus et sont accessibles directement à partir du type englobant.

Maintenant, vous pouvez appeler de manière transparente Date() et toute autre méthode de time .Time en utilisant des instances de StartTime. Cette approche vous permet de créer des types nommés avec des fonctionnalités étendues tout en préservant les capacités d'origine du type de base.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal