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
Susan Sarandonoriginal
2024-12-06 04:43:09634parcourir

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 {...}

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
}

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

myStartTime.Date()

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!

Déclaration:
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