Maison > développement back-end > Golang > L'utilisation des interfaces en langage Go

L'utilisation des interfaces en langage Go

Libérer: 2019-11-29 15:24:23
avant
2992 Les gens l'ont consulté

L'utilisation des interfaces en langage Go

Dans Go, la signification de l'interface n'est pas différente de celle des interfaces dans d'autres langues. L'interface est comprise comme un type de spécification ou de convention. Un type « implémente-t-il » une interface ? Cela dépend si ce type implémente toutes les méthodes définies dans l'interface. (Recommandé : tutoriel de langage go)

1. La définition et l'utilisation des interfaces.

Par exemple,

type I interface{
    Get() int
    Put(int)
 
}
Copier après la connexion

Ce paragraphe définit une interface, qui contient deux fonctions Get et Put

D'accord, une de mes interfaces Cette interface est implémenté :

type S struct {val int}
func (this *S) Get int {
    return this.val
}
func (this *S)Put(v int) {
    this.val = v
 
}
Copier après la connexion

Cette structure S est l'interface I

2 Interface vide

pour l'interface d'interface vide{}. est en fait très similaire au concept de génériques. N’importe quel type implémente l’interface vide.

Ce qui suit est un exemple :

Une fonction implémente une telle fonction :

Prenez n'importe quel objet comme paramètre Si l'objet implémente l'interface I, alors appelez l'interface I. La méthode Get

a cette logique dans de nombreuses langues :

function g(obj){
    if (obj is I) {
        return (I)obj.Get()
    }
 
}
Copier après la connexion

Elle est implémentée comme ceci dans Go :

func g(any interface{}) int {
    return any.(I).Get()
 
}
Copier après la connexion

any.(I) ici, ce n'est pas très sémantique ? "Tout objet qui implémente l'interface I"

3. Comment écrire une interface dans Go :

Regardons quelques exemples d'interface :

func SomeFunction(w interface{Write(string)}){
    w.Write("pizza")
 
}
Copier après la connexion

Dans cet exemple, l'interface est directement définie dans le paramètre, ce qui est très particulier...

func weirdFunc( i int ) interface{} {
  if i ==  0 {
    return "zero"
  }
  return i;
}
Copier après la connexion

Dans cet exemple, comme il est possible de renvoyer string ou int, le retour La valeur est définie sur interface , ce qui peut être vu en grand nombre dans les packages Go.

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal