implémentation par défaut de l'interface Golang
Afin de rendre le code plus flexible et évolutif, il est souvent nécessaire d'utiliser des interfaces pour le développement. Dans le langage Go, l'interface est une fonctionnalité de langage très puissante qui prend en charge plusieurs structures pour implémenter la même interface.
Cependant, dans le passé, le langage Go ne prenait pas en charge l'implémentation par défaut des interfaces, ce qui signifiait que lors de l'implémentation d'une interface, toutes les méthodes de l'interface devaient être implémentées. Lorsque vous devez hériter d'une interface, vous devez implémenter la même méthode encore et encore dans la sous-interface, ce qui entraîne un degré élevé de duplication de code et n'est pas propice à l'expansion et à la maintenance du code.
Afin de résoudre ce problème, à partir de la version 1.8 du langage Go, la prise en charge de l'implémentation par défaut de l'interface est fournie. Cette fonctionnalité nous permet de définir des implémentations par défaut des méthodes dans l'interface, de sorte que seules les méthodes nécessaires doivent être implémentées lors de l'implémentation de l'interface.
La syntaxe de l'implémentation par défaut de l'interface
La syntaxe de l'implémentation par défaut de l'interface est très simple Il vous suffit d'ajouter le mot-clé default avant l'implémentation de la méthode. Par exemple :
type Reader interface {
Read(p []byte) (n int, err error) default Close() error { return nil }
}
Dans cet exemple, l'interface Reader définit la méthode Read et une implémentation par défaut de la méthode Close. Si l'interface Reader est implémentée mais que la méthode Close n'est pas implémentée, le système utilisera la méthode Close par défaut.
Il convient de noter que si une interface définit une méthode d'implémentation par défaut, il vous suffit alors d'implémenter la méthode autre que celle par défaut lors de l'implémentation de l'interface. Si vous souhaitez remplacer la méthode d'implémentation par défaut, vous pouvez définir une méthode du même nom dans la structure qui implémente l'interface pour remplacer l'implémentation par défaut.
Scénarios d'application pour l'implémentation par défaut de l'interface
Les scénarios d'utilisation pour l'implémentation par défaut de l'interface sont très larges. Ci-dessous, nous présenterons plusieurs scénarios d'application courants.
- Imbrication d'interface
En langage Go, l'imbrication d'interface est une technologie très courante. Les interfaces imbriquées peuvent rendre le code plus flexible et mieux organisé.
Supposons que nous ayons une interface qui doit lire et écrire des fichiers :
type FileReadWrite interface {
Read(p []byte) (n int, err error) Write(p []byte) (n int, err error)
}
Maintenant, nous définissons une interface qui doit fermer les fichiers :
type Closeable interface {
Close() error
}
Si nous voulons définir une interface d'opération de fichier, y compris les méthodes de lecture, d'écriture et de fermeture de fichier, vous pouvez utiliser des interfaces imbriquées :
type FileOperation interface {
FileReadWrite Closeable
}
L'utilisation de l'implémentation par défaut peut éviter la duplication des implémentations lors de l'implémentation de FileOperation Interface Méthode de fermeture.
- Mise à niveau de la version de l'interface
Au cours du processus de développement, des mises à niveau de la version de l'interface sont souvent rencontrées. Lorsque nous devons ajouter des méthodes à une interface, si nous modifions directement l'interface d'origine, tout le code qui a implémenté l'interface devra être modifié.
En utilisant l'implémentation par défaut, nous pouvons ajouter de nouvelles méthodes à l'interface sans casser le code existant. Si vous devez utiliser une nouvelle méthode, vous pouvez remplacer la méthode d'implémentation par défaut dans la structure qui implémente l'interface.
- Modèle d'adaptateur d'interface
Le modèle d'adaptateur est un modèle de conception courant qui est utilisé pour convertir l'interface d'une classe en une autre interface afin de faciliter l'interaction entre les classes qui ne prennent pas en charge l'interface.
En langage Go, nous pouvons utiliser l'implémentation par défaut de l'interface pour implémenter rapidement le modèle d'adaptateur. Voici un exemple simple :
type USB interface {
Connect() DataTransfer(data string) string
}
type Adaptee struct {}
func (a *Adaptee) OldInterface() {
fmt.Println("support old interface")
}
type Adapter interface {
USB
}
type AdapterImpl struct {
Adaptee
}
func (a *AdapterImpl) Connect() {
fmt.Println("connect USB")
}
func (a *AdapterImpl) DataTransfer(data string) string {
fmt.Println("transfer data through USB") a.OldInterface() return "Result"
}
Dans cet exemple, nous avons défini une interface USB, et également défini une ancienne interface Adaptee pour démontrer l'utilisation de l'adaptateur. Afin de permettre à Adaptee d'utiliser l'interface USB, nous définissons un adaptateur qui implémente l'interface Adaptateur.
Connect et DataTransfer dans l'adaptateur utilisent l'implémentation par défaut. La méthode OldInterface d'Adaptee est appelée dans l'implémentation par défaut. De cette façon, nous pouvons utiliser un adaptateur pour convertir une classe qui ne prend pas en charge l'interface USB en une classe qui prend en charge l'interface USB.
Résumé
L'implémentation par défaut des interfaces en langage Go est une fonctionnalité du langage très pratique. Cela nous permet de définir les interfaces de manière plus flexible, tout en réduisant la duplication de code et en améliorant la qualité du code. Grâce à l'utilisation de l'implémentation par défaut de l'interface, nous pouvons plus facilement implémenter des modèles de conception tels que la réutilisation et le modèle d'adaptateur.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

OpenSSL, en tant que bibliothèque open source largement utilisée dans les communications sécurisées, fournit des algorithmes de chiffrement, des clés et des fonctions de gestion des certificats. Cependant, il existe des vulnérabilités de sécurité connues dans sa version historique, dont certaines sont extrêmement nocives. Cet article se concentrera sur les vulnérabilités et les mesures de réponse communes pour OpenSSL dans Debian Systems. DebianopenSSL CONNUTS Vulnérabilités: OpenSSL a connu plusieurs vulnérabilités graves, telles que: la vulnérabilité des saignements cardiaques (CVE-2014-0160): cette vulnérabilité affecte OpenSSL 1.0.1 à 1.0.1F et 1.0.2 à 1.0.2 Versions bêta. Un attaquant peut utiliser cette vulnérabilité à des informations sensibles en lecture non autorisées sur le serveur, y compris les clés de chiffrement, etc.

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Chemin d'apprentissage du backend: le parcours d'exploration du front-end à l'arrière-end en tant que débutant back-end qui se transforme du développement frontal, vous avez déjà la base de Nodejs, ...

Cet article présente une variété de méthodes et d'outils pour surveiller les bases de données PostgreSQL sous le système Debian, vous aidant à saisir pleinement la surveillance des performances de la base de données. 1. Utilisez PostgreSQL pour reprendre la surveillance Afficher PostgreSQL lui-même offre plusieurs vues pour surveiller les activités de la base de données: PG_STAT_ACTIVITY: affiche les activités de la base de données en temps réel, y compris les connexions, les requêtes, les transactions et autres informations. PG_STAT_REPLIcation: surveille l'état de réplication, en particulier adapté aux grappes de réplication de flux. PG_STAT_DATABASE: Fournit des statistiques de base de données, telles que la taille de la base de données, les temps de validation / recul des transactions et d'autres indicateurs clés. 2. Utilisez l'outil d'analyse de journaux pgbadg

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Dans le cadre du cadre de beegoorm, comment spécifier la base de données associée au modèle? De nombreux projets Beego nécessitent que plusieurs bases de données soient opérées simultanément. Lorsque vous utilisez Beego ...

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...
