Maison > développement back-end > Golang > Comment puis-je appeler des méthodes de type sous-jacentes sur un type nommé dans Go ?

Comment puis-je appeler des méthodes de type sous-jacentes sur un type nommé dans Go ?

Susan Sarandon
Libérer: 2024-12-06 04:43:09
original
629 Les gens l'ont consulté

How Can I Call Underlying Type Methods on a Named Type in Go?

Méthodes d'appel de types nommés

Dans Go, les types nommés créés à l'aide du mot-clé type sont des types distincts de leurs types sous-jacents. Par conséquent, les méthodes appartenant au type sous-jacent ne peuvent pas être invoquées directement sur le type nommé.

Pour résoudre ce problème et étendre un type nommé avec des méthodes supplémentaires tout en préservant sa fonctionnalité d'origine, la technique de l'intégration peut être utilisée . En incorporant le type sous-jacent de manière anonyme dans le type nommé, les méthodes et les champs du type intégré deviennent promus et accessibles dans le type nommé.

Par exemple, si vous avez un type nommé StartTime qui enveloppe une heure.Time value :

type StartTime time.Time

func (st *StartTime) UnmarshalJSON(b []byte) error {...}
Copier après la connexion

Pour accéder aux méthodes de time.Time sur le type StartTime, intégrez time.Time de manière anonyme dans StartTime :

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

Maintenant, vous pouvez appeler des méthodes telles que Date() sur StartTime comme si elles étaient directement définies sur le type :

myStartTime.Date()
Copier après la connexion

Cette approche permet une extension transparente de types nommés avec des méthodes supplémentaires tout en conservant la fonctionnalité d'origine du type sous-jacent.

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