Heim > Backend-Entwicklung > Golang > Was ist der Zweck des leeren Bezeichners in der Interface-Assertion von Go?

Was ist der Zweck des leeren Bezeichners in der Interface-Assertion von Go?

Susan Sarandon
Freigeben: 2024-12-23 02:13:18
Original
666 Leute haben es durchsucht

What is the Purpose of the Blank Identifier in Go's Interface Assertion?

Zweck des Leerbezeichners bei der Variablenzuweisung

In Variablendeklarationen wie var _ PropertyLoadSaver = (*Doubler)(nil) wird die Die leere Kennung dient einem bestimmten Zweck. Dieses Konstrukt ist eine Behauptung zur Kompilierungszeit, dass der *Doubler-Typ die PropertyLoadSaver-Schnittstelle implementiert.

In Go implementiert ein Typ eine Schnittstelle, wenn er einen Methodensatz anbietet, der den Methodensatz der Schnittstelle überschreitet oder diesem entspricht. Wenn der *Doubler-Typ dieses Kriterium nicht erfüllt, gibt der Compiler einen Fehler wie folgt aus:

prog.go:21: cannot use (*Doubler)(nil) (type *Doubler) as type PropertyLoadSaver in assignment:
*Doubler does not implement PropertyLoadSaver (missing Save method)
Nach dem Login kopieren

Bei dieser Technik mit leeren Bezeichnern wird eine unbenannte Variable vom Typ PropertyLoadSaver deklariert und ihr dann ein Nullwert von zugewiesen Geben Sie Doubler über den Ausdruck (*Doubler)(nil) ein. Diese Zuweisung ist nur gültig, wenn Doubler die PropertyLoadSaver-Schnittstelle implementiert.

Der leere Bezeichner unterstreicht die Tatsache, dass auf diese Variable an keiner anderen Stelle im Paket verwiesen wird. In ähnlicher Weise erzielt die folgende Zeile das gleiche Ergebnis, jedoch mit einem nicht leeren Bezeichner:

var assertStarDoublerIsPropertyLoadSaver PropertyLoadSaver = (*Doubler)(nil)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist der Zweck des leeren Bezeichners in der Interface-Assertion von Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage