Die Verwendung von Schnittstellen in der Go-Sprache

Freigeben: 2019-11-29 15:24:23
nach vorne
2877 Leute haben es durchsucht

Die Verwendung von Schnittstellen in der Go-Sprache

In Go unterscheidet sich die Schnittstellenbedeutung nicht von den Schnittstellen in anderen Sprachen. Unter Schnittstelle wird eine Art Spezifikation oder Konvention verstanden. „Implementiert“ ein Typ eine Schnittstelle? Es hängt davon ab, ob dieser Typ alle in der Schnittstelle definierten Methoden implementiert. (Empfohlen: Sprachtutorial aufrufen)

1. Die Definition und Verwendung von Schnittstellen.

Zum Beispiel

type I interface{
    Get() int
    Put(int)
 
}
Nach dem Login kopieren

Diese Passage definiert eine Schnittstelle, die zwei Funktionen Get und Put enthält

Okay, eine meiner Schnittstellen ist diese Schnittstelle implementiert:

type S struct {val int}
func (this *S) Get int {
    return this.val
}
func (this *S)Put(v int) {
    this.val = v
 
}
Nach dem Login kopieren

Diese Struktur S ist die Schnittstelle I

2. Leere Schnittstelle

Für leere Schnittstelle Schnittstelle{} ist tatsächlich dem Konzept der Generika sehr ähnlich. Jeder Typ implementiert die leere Schnittstelle.

Das Folgende ist ein Beispiel:

Eine Funktion implementiert eine solche Funktion:

Nehmen Sie ein beliebiges Objekt als Parameter. Wenn das Objekt die Schnittstelle I implementiert, rufen Sie die Schnittstelle I auf Die Get-Methode

hat in vielen Sprachen diese Logik:

function g(obj){
    if (obj is I) {
        return (I)obj.Get()
    }
 
}
Nach dem Login kopieren

So wird sie in Go implementiert:

func g(any interface{}) int {
    return any.(I).Get()
 
}
Nach dem Login kopieren

any.(I) ist hier nicht sehr semantisch . ? „Jedes Objekt, das die I-Schnittstelle implementiert“

3. So schreiben Sie eine Schnittstelle in Go:

Sehen wir uns ein paar Schnittstellenbeispiele an:

func SomeFunction(w interface{Write(string)}){
    w.Write("pizza")
 
}
Nach dem Login kopieren

In diesem Beispiel wird die Schnittstelle direkt im Parameter definiert, was etwas ganz Besonderes ist...

func weirdFunc( i int ) interface{} {
  if i ==  0 {
    return "zero"
  }
  return i;
}
Nach dem Login kopieren

In diesem Beispiel ist es möglich, String oder Int zurückzugeben, die Rückgabe value ist auf interface gesetzt, was in Go-Paketen in großer Zahl zu sehen ist.

Das obige ist der detaillierte Inhalt vonDie Verwendung von Schnittstellen in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage