Maison >développement back-end >Golang >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) }
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 }
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() } }
Elle est implémentée comme ceci dans Go :
func g(any interface{}) int { return any.(I).Get() }
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") }
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; }
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!