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!