Maison  >  Article  >  développement back-end  >  Présentation de l'utilisation de l'interface dans Golang

Présentation de l'utilisation de l'interface dans Golang

PHPz
PHPzoriginal
2023-04-14 11:21:391351parcourir

Go est un langage de programmation fortement typé Contrairement à d'autres langages de programmation, il possède un type d'interface, qui permet de définir la signature d'une ou plusieurs méthodes, mais pas d'implémenter. En implémentant les méthodes de cette interface, différents types d'objets avec différents types de données peuvent être attribués au même type d'interface et traités, rendant la programmation plus flexible et extensible.

Présentons en détail l'utilisation de l'interface dans Golang.

Concept de base de l'interface

En Golang, l'interface est un moyen de définir un contrat. Elle définit un ensemble de méthodes qui doivent être implémentées par certains objets. Lorsqu'un objet implémente toutes les méthodes d'une interface, l'objet est considéré comme implémentant l'interface. Nous pouvons définir une interface via le mot-clé interface, et sa syntaxe de définition est la suivante :

type interface_name interface {
  method_name1 [return_type]
  method_name2 [return_type]
  ...
  method_namen [return_type]
}

Utilisation de l'interface

Après avoir défini une interface, nous pouvons atteindre l'objectif de restreindre les méthodes en implémentant cette interface. Voici un exemple simple :

package main

import "fmt"

type Printer interface {
    Print()
}
//定义接口

type Hero struct {
    Name    string
    Age     int
    Address string
}//定义一个结构体

func (h *Hero) Print() {
    fmt.Println("Name:", h.Name)
    fmt.Println("Age: ", h.Age)
    fmt.Println("Address: ", h.Address)
}//实现接口

func main() {
    hero1 := &Hero{Name: "Diana Prince", Age: 33, Address: "Washington, D.C."}
    hero1.Print()
}//使用接口

Dans l'exemple ci-dessus, nous avons défini l'interface Printer, qui n'a qu'une seule méthode Print(), puis nous avons défini une structure Hero pour implémenter la méthode Print() dans l'interface. utilisez hero1 pour appeler la méthode Print().

Interface vide

Une interface vide est une interface qui ne contient aucune méthode, c'est-à-dire qu'elle n'a besoin d'implémenter aucune méthode. Nous pouvons attribuer n'importe quel type de valeur à une variable d'interface vide.

Le type d'interface vide interface{} peut être attribué à n'importe quelle variable et peut être utilisé comme conteneur pour n'importe quel type de données. Une fonction peut recevoir un paramètre d'un type d'interface vide et peut également renvoyer une valeur d'un type d'interface vide.

Assertion de type de l'interface

Lors de l'utilisation d'une interface vide, il est souvent nécessaire de convertir les variables en types spécifiques. Go fournit un mécanisme d'assertion de type qui peut vérifier le type de la valeur pointée par une variable de type d'interface.

value, ok := var_interface.(Type_name)

Parmi eux, var_interface représente la variable d'interface, Type_name est le type qui doit être affirmé, value représente la valeur convertie une fois l'assertion réussie et ok représente si l'assertion est réussie.

Combinaison et intégration d'interfaces

Les interfaces peuvent être combinées et intégrées pour étendre les fonctionnalités de l'interface.

type Interface1 interface {
    method1()
}

type Interface2 interface {
    method2()
}

type Interface3 interface {
    Interface1
    Interface2
    method3()
}

Dans l'exemple ci-dessus, Interface3 combine Interface1 et Interface2 pour avoir toutes leurs méthodes, et Interface3 peut également avoir sa propre méthode method3().

De plus, l'intégration d'interfaces est également prise en charge dans Golang.

type Animals interface {
    Name() string
}

type Dog struct {
    Animals //继承接口
}

func (d Dog) Bark() {
    fmt.Println("汪汪汪!")
}

Dans l'exemple ci-dessus, nous intégrons l'interface Animals et implémentons la méthode Name() pour hériter de la méthode Name() d'Animaux après l'instanciation de Dog.

Résumé

L'interface est un moyen de définir des contrats dans Golang, ce qui peut limiter la mise en œuvre des méthodes. L'implémentation d'interfaces permet de traiter des objets de différents types de la même manière. Dans le même temps, le langage fournit également des fonctionnalités telles que des assertions de type, des combinaisons d'interfaces et des intégrations d'interfaces, rendant l'application des interfaces plus flexible et extensible.

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