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
Susan SarandonOriginal
2024-12-23 02:13:18726Durchsuche

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)

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)

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!

Stellungnahme:
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