Maison  >  Article  >  développement back-end  >  Parlons du concept d'interfaces dans Golang

Parlons du concept d'interfaces dans Golang

PHPz
PHPzoriginal
2023-04-14 13:45:14899parcourir

Golang est un tout nouveau langage de programmation dont la conception met l'accent sur la simplicité, l'efficacité et la sécurité. Dans Golang, l'interface est un concept très important. Elle peut être utilisée pour définir des spécifications, implémenter le polymorphisme et encapsuler les détails d'implémentation. Cet article présentera le concept, la syntaxe et l'utilisation des interfaces dans Golang afin que les lecteurs puissent mieux comprendre et utiliser le langage.

1. Concept d'interface Golang

Une interface est un type abstrait utilisé pour définir la spécification de comportement d'un objet. Une interface définit les signatures d'un ensemble de méthodes, et tout type qui implémente ces méthodes peut être appelé type d'implémentation de l'interface. L'interface se compose de deux parties : le type statique et le type dynamique, où le type statique fait référence à la définition du type de l'interface et le type dynamique fait référence au type d'implémentation spécifique de l'interface.

Les interfaces dans Golang présentent de nombreux avantages par rapport à d'autres langages de programmation, tels que :

  1. Implémentation simple : les interfaces dans Golang sont très simples, il suffit de définir un ensemble de signatures de méthode.
  2. Facile à appeler : l'interface étant de type abstrait, les appels polymorphes peuvent être facilement implémentés.
  3. Forte évolutivité : l'interface peut être implémentée par n'importe quel type, elle a donc une bonne évolutivité.

2. Syntaxe de l'interface Golang

Dans Golang, définir une interface est très simple Il suffit d'utiliser les mots-clés type et interface. La syntaxe spécifique est la suivante :

type 接口名 interface{
    方法1(参数列表) 返回值列表
    方法2(参数列表) 返回值列表
    …
}

Parmi eux, le nom de l'interface est l'identifiant. défini par le nom d'utilisateur. La méthode est un ensemble de signatures de fonction. La syntaxe de l'interface dans Golang est très flexible et la liste des paramètres et la liste des valeurs de retour dans la méthode peuvent être définies selon les besoins.

Maintenant, regardons un exemple simple :

type Shape interface{
    Perimeter() float64
    Area() float64
}

Dans cet exemple, nous définissons une interface nommée Shape, comprenant deux méthodes : Perimeter() et Area(). On peut voir que la méthode Perimeter() renvoie le périmètre de type float64, tandis que Area() renvoie la zone de type float64.

3. Comment utiliser l'interface Golang

Dans Golang, nous pouvons définir des spécifications de type en implémentant une ou plusieurs interfaces. La méthode d'utilisation des interfaces est la suivante :

  1. Définir une interface

Avant d'implémenter une interface, nous devons d'abord définir une interface. Comme mentionné précédemment, une interface peut définir un ensemble de méthodes par lesquelles la fonctionnalité de l'interface est décrite. Dans Golang, définir une interface est très simple, il suffit d'utiliser les mots-clés type et interface.

  1. Implémentation d'interfaces

Le processus d'implémentation d'une interface consiste à standardiser un certain type de comportement afin qu'il soit conforme à la spécification d'interface définie. Lorsqu'un type utilise la signature de méthode définie par une interface, on dit qu'il implémente l'interface. Dans Golang, l'implémentation de l'interface peut être réalisée de la manière suivante :

type Circle struct{
    radius float64
}

func(circle Circle) Perimeter() float64{
    return 2 * math.Pi * circle.radius
}

func(circle Circle) Area() float64{
    return math.Pi * math.Pow(circle.radius, 2)
}

Dans cet exemple, nous avons créé une structure nommée Circle, qui contient un attribut de rayon. De plus, nous avons également défini deux méthodes, Perimeter() et Area(), pour implémenter les exigences de l'interface Shape.

  1. Utiliser des interfaces

Dans Golang, nous pouvons implémenter des méthodes d'appel polymorphes en utilisant des interfaces. Plus précisément, nous pouvons pointer une variable d'un type d'interface vers un certain type, puis appeler la méthode d'interface implémentée par ce type. Par exemple :

func main(){
    var shape Shape
    shape = Circle{radius: 2}
    fmt.Println(shape.Perimeter(), shape.Area())
}

Dans cet exemple, nous créons une variable d'interface de type Shape et la pointons vers une structure de type Circle. Étant donné que Circle implémente les méthodes spécifiées par l'interface Shape, ce programme peut afficher le périmètre et l'aire du Cercle.

4. Cas d'interface Golang

Enfin, jetons un coup d'œil à un cas complet d'interface Golang : implémentation d'une calculatrice. Voici l'implémentation du code :

type Calculator interface{
    Add(a, b float64) float64
    Sub(a, b float64) float64
    Mul(a, b float64) float64
    Div(a, b float64) float64
}

type Cal struct{}

func(cal Cal) Add(a, b float64) float64{
    return a + b
}

func(cal Cal) Sub(a, b float64) float64{
    return a - b
}

func(cal Cal) Mul(a, b float64) float64{
    return a * b
}

func(cal Cal) Div(a, b float64) float64{
    if b == 0 {
        return 0
    }
    return a / b
}

func main(){
    var cal Calculator
    cal = Cal{}
    fmt.Println(cal.Add(1,2), cal.Sub(3,1), cal.Mul(2,3), cal.Div(9,3))
}

Dans cet exemple, nous définissons une interface nommée Calculator et définissons quatre méthodes à l'intérieur : Add(), Sub(), Mul() et Div(). Nous avons également créé une structure nommée Cal et implémenté toutes les méthodes requises par l'interface Calculatrice. Dans la fonction principale, nous définissons une variable d'interface nommée cal et la pointons vers la structure Cal. Puisque Cal implémente toutes les méthodes dans l'interface de la calculatrice, nous pouvons afficher les résultats de l'addition, de la soustraction, de la multiplication et de la division via cette variable.

En bref, l'interface de Golang est un outil très pratique qui peut jouer un très bon rôle dans la standardisation, l'encapsulation et l'expansion dans la conception de code. Grâce à l'introduction de cet article, nous pensons que vous avez compris le concept, la syntaxe et l'utilisation de l'interface Golang. Nous pensons que dans la programmation réelle, vous deviendrez également plus compétent dans la maîtrise de cet outil.

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