Leere Bezeichner in Variablenzuweisungen: Eine Sicherheit zur Kompilierungszeit
Im Zusammenhang mit Variablen wird ein leerer Bezeichner verwendet, um anzugeben, dass die Die Variable wird später im Programm nicht verwendet oder referenziert. Sie erfüllt jedoch weiterhin einen Zweck im Kompilierungsprozess, wie im Codeausschnitt zu sehen ist:
var _ PropertyLoadSaver = (*Doubler)(nil)
Diese Deklaration verwendet einen leeren Bezeichner für die Variable, wodurch sie anonym und unzugänglich wird. Sein wahrer Zweck besteht darin, zu überprüfen, ob der *Doubler-Typ der PropertyLoadSaver-Schnittstelle entspricht.
Implementieren von Schnittstellen
In Go implementiert ein Typ eine Schnittstelle, wenn sein Methodensatz Folgendes enthält oder den Methodensatz der Schnittstelle überschreitet. Das bedeutet, dass jeder Typ, der eine Schnittstelle implementiert, alle in dieser Schnittstelle definierten Methoden bereitstellen muss.
Asserting Interface Implementation
Der obige Code bestätigt, dass der Doubler Typ implementiert die PropertyLoadSaver-Schnittstelle. Wenn Doubler diese Anforderung nicht erfüllt, wird die Kompilierung mit einer Fehlermeldung angehalten, die darauf hinweist, dass *Doubler die erforderliche(n) Methode(n) von PropertyLoadSaver nicht implementiert.
So funktioniert es
Der Ausdruck (*Doubler)(nil) wandelt den untypisierten Nullwert in einen Nullwert vom Typ um Verdoppeler. Dieser Nullwert kann der Variable PropertyLoadSaver zugewiesen werden, aber nur, wenn Doubler die Schnittstelle erfüllt.
Warum einen leeren Bezeichner verwenden?
Ein leerer Bezeichner ist verwendet, da die Variable selbst nicht zur Verwendung vorgesehen ist. Es dient ausschließlich der Validierung der Schnittstellenimplementierung während der Kompilierung.
Alternative mit nicht-leerem Bezeichner
Auf Wunsch kann stattdessen ein nicht-leerer Bezeichner verwendet werden, wie gezeigt unten:
var assertStarDoublerIsPropertyLoadSaver PropertyLoadSaver = (*Doubler)(nil)
Obwohl dieser Ansatz funktional gleichwertig ist, führt er eine benannte Variable ein, die an keiner anderen Stelle im verwendet werden darf Programm.
Das obige ist der detaillierte Inhalt vonWie stellen leere Bezeichner die Schnittstellenimplementierung zur Kompilierungszeit in Go sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!