Maison > développement back-end > Golang > le corps du texte

Comment convertir une fonction en une implémentation d'interface ?

Patricia Arquette
Libérer: 2024-11-06 18:09:02
original
381 Les gens l'ont consulté

How to Convert a Function into an Interface Implementation?

Comprendre l'implémentation des fonctions d'une interface

Introduction

Les interfaces en programmation définissent un ensemble de méthodes qu'un type doit implémenter pour être considéré comme une implémentation d’interface valide. Lorsqu'une fonction implémente une interface, sa signature de méthode doit correspondre à la signature de méthode de l'interface.

Interface et implémentation

Dans ce cas, nous avons l'interface suivante :

type Handler interface {
    ServeHTTP(*Conn, *Request)
}
Copier après la connexion

Cette interface définit une méthode appelée ServeHTTP, qui prend un Conn et une Request comme arguments.

L'implémentation suivante du type Counter satisfait l'interface Handler :

type Counter int

func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) {
    fmt.Fprintf(c, "counter = %d\n", ctr);
    ctr++;
}
Copier après la connexion

Conversion d'une fonction pour implémenter l'interface

Parfois, nous pouvons avoir une fonction qui correspond à la signature de la méthode d'interface mais qui n'est pas directement implémentée en tant que méthode. Dans de tels cas, la technique suivante peut être utilisée pour convertir la fonction en une implémentation d'interface :

// Now we define a type to implement ServeHTTP:
type HandlerFunc func(*Conn, *Request)
func (f HandlerFunc) ServeHTTP(c *Conn, req *Request) {
    f(c, req) // the receiver's a func; call it
}
// Convert function to attach method, implement the interface:
var Handle404 = HandlerFunc(notFound);
Copier après la connexion

Dans cet exemple, la fonction notFound n'est pas une méthode, mais elle correspond à la signature de la méthode ServeHTTP. Pour le rendre compatible avec l'interface Handler, nous créons un type HandlerFunc qui encapsule la fonction dans une méthode. Ensuite, nous créons une instance de HandlerFunc avec notFound comme valeur. Cette instance, Handle404, implémente désormais l'interface Handler et peut être utilisée comme une implémentation valide.

Résumé

Cette technique montre comment les fonctions qui satisfont à la signature de méthode d'une interface peuvent être converties en implémentations d'interface, même s'il ne s'agit pas de méthodes d'un type personnalisé. Cette approche est particulièrement utile lorsque vous travaillez avec des fonctions existantes qui doivent être adoptées dans des systèmes basés sur une interface.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!