Maison > Article > développement back-end > requête d'interface Golang
Golang, également connu sous le nom de langage Go, est un langage de programmation open source compilé au niveau du système. Comparé à d'autres langages de programmation, Golang a une concurrence plus élevée et une sécurité de mémoire plus forte, il a donc été largement utilisé dans les applications Internet. Dans Golang, l'interface est un concept très important, c'est le mécanisme de base pour réaliser le polymorphisme. Cet article présentera le contenu pertinent de la requête d'interface dans Golang.
1. Première introduction aux interfaces
En Golang, l'interface est un type, Il définit la spécification du comportement de l'objet, c'est-à-dire qu'il spécifie les méthodes que l'objet doit avoir. Une interface est un concept abstrait qui n’a en soi aucune signification pratique. Elle définit simplement un ensemble de méthodes implémentées par le type qui implémente l’interface. Dans Golang, le type qui implémente l'interface doit implémenter toutes les méthodes définies dans l'interface, sinon des erreurs de compilation se produiront.
L'interface est le mécanisme permettant d'obtenir le polymorphisme dans Golang. En utilisant des interfaces, des objets de différents types peuvent être traités comme étant du même type, permettant ainsi un traitement unifié des objets. Dans Golang, les interfaces peuvent également être utilisées pour implémenter des fonctions telles que l'injection de dépendances et la conversion de type.
Dans Golang, vous pouvez utiliser le mot-clé type pour définir un type d'interface. L'interface est définie comme suit :
type interface_name interface { method_name1(parameters_list) return_value_list method_name2(parameters_list) return_value_list ... }
Dans la définition de l'interface, chaque méthode se compose d'un nom de méthode, d'une liste de paramètres et d'une liste de valeurs de retour. Parmi eux, la liste de paramètres et la liste de valeurs de retour peuvent contenir plusieurs paramètres. Si la méthode n'a pas de valeur de retour, la liste des valeurs de retour peut être omise.
2. Requête d'interface
La requête d'interface consiste à juger si l'objet implémente une interface et comment utiliser les méthodes de l'objet. Dans Golang, vous pouvez utiliser des assertions de type et des jugements de type pour effectuer des requêtes d'interface.
L'assertion de type fait référence à la détermination si un objet est d'un certain type lorsque le programme est en cours d'exécution et à sa conversion en ce type taper . Dans Golang, vous pouvez utiliser la méthode suivante pour l'assertion de type :
value, ok := object.(type_name)
où l'objet représente l'objet qui doit être saisi et type_name représente le type qui doit être converti. Si l'objet est un objet de type type_name, la valeur représente l'objet converti, et ok est vrai, sinon, la valeur est nulle et ok est faux ;
Le jugement de type fait référence à juger si un objet implémente une certaine interface lorsque le programme est en cours d'exécution. Dans Golang, vous pouvez utiliser la méthode suivante pour le jugement de type :
_, ok := object.(interface_name)
Parmi elles, object représente l'objet qui doit être jugé et interface_name représente l'interface qui doit être implémentée. Si l'objet implémente l'interface interface_name, ok est vrai ; sinon, ok est faux.
3. Exemple de démonstration
Ce qui suit utilise un exemple pour démontrer l'utilisation de la requête d'interface.
Tout d'abord, nous devons créer une interface Animal pour définir les spécifications de comportement des animaux. La définition de l'interface Animal est la suivante :
type Animal interface { Eat(food string) string Sleep() string }
Dans l'interface Animal, deux méthodes Eat et Sleep sont définies pour représenter le comportement des animaux mangeant et dormant.
Ensuite, nous devons créer deux classes d'implémentation Cat et Dog pour implémenter les méthodes définies dans l'interface Animal . Les classes Cat et Dog sont définies comme suit :
type Cat struct{} func (c *Cat) Eat(food string) string { return fmt.Sprintf("Cat is eating %s", food) } func (c *Cat) Sleep() string { return "Cat is sleeping" } type Dog struct{} func (d *Dog) Eat(food string) string { return fmt.Sprintf("Dog is eating %s", food) } func (d *Dog) Sleep() string { return "Dog is sleeping" }
Dans les classes Cat et Dog, les deux méthodes Eat et Sleep définies dans l'interface Animal sont implémentées respectivement.
Enfin, nous devons tester la fonction de requête d'interface pour déterminer si les objets Cat et Dog implémentent l'interface Animal. Le code de test est le suivant :
func main() { var animal Animal cat := &Cat{} if _, ok := cat.(Animal); ok { fmt.Println("cat implements Animal interface") animal = cat } dog := &Dog{} if _, ok := dog.(Animal); ok { fmt.Println("dog implements Animal interface") animal = dog } fmt.Println(animal.Eat("meat")) fmt.Println(animal.Sleep()) }
Dans le code de test, créez d'abord la variable animal pour stocker les objets qui implémentent l'interface Animal. Ensuite, les objets Cat et Dog sont créés respectivement et le jugement de type est utilisé pour déterminer s'ils implémentent l'interface Animal. Enfin, appelez les méthodes Eat et Sleep de l'objet animal à des fins de test.
4. Résumé
L'interface est le mécanisme de base pour réaliser le polymorphisme dans Golang. La requête d'interface consiste à déterminer si un objet implémente une interface et comment l'utiliser lorsque le programme est. en cours d'exécution. Dans Golang, vous pouvez utiliser des assertions de type et des jugements de type pour effectuer des requêtes d'interface et effectuer des opérations polymorphes sur des objets.
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!