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) }
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 }
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() } }
So wird sie in Go implementiert:
func g(any interface{}) int { return any.(I).Get() }
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") }
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; }
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!