Heim > Backend-Entwicklung > Golang > Warum den leeren Bezeichner in Gos Schnittstellenbehauptungen zur Kompilierungszeit verwenden?

Warum den leeren Bezeichner in Gos Schnittstellenbehauptungen zur Kompilierungszeit verwenden?

Barbara Streisand
Freigeben: 2024-12-24 08:01:17
Original
396 Leute haben es durchsucht

Why Use the Blank Identifier in Go's Compile-Time Interface Assertions?

Zweck des leeren Bezeichners bei der Variablenzuweisung

Wenn Sie auf Variablenzuweisungen wie die folgenden stoßen, fragen Sie sich vielleicht, warum ein leerer Bezeichner verwendet wird:

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

Dieser leere Bezeichner dient einem entscheidenden Zweck bei der Durchführung von Assertionen zur Kompilierungszeit und stellt sicher, dass ein bestimmter Typ die Anforderungen erfüllt Anforderungen einer Schnittstelle.

In diesem Beispiel wird der Typ *Doubler gegen die PropertyLoadSaver-Schnittstelle geprüft. Wenn *Doubler nicht alle in der Schnittstelle definierten erforderlichen Methoden implementiert, schlägt die Kompilierung mit der Fehlermeldung fehl, dass *Doubler eine bestimmte Methode fehlt.

Der Code weist einer Variablen vom Typ PropertyLoadSaver einen untypisierten Nullwert zu mit (*Doubler)(nil). Diese Zuweisung ist nur gültig, wenn *Doubler die PropertyLoadSaver-Schnittstelle implementiert. Ist dies nicht der Fall, endet die Kompilierung mit einer Fehlermeldung ähnlich der folgenden:

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

Der leere Bezeichner _ wird verwendet, da auf die Variable nirgendwo anders im Paket verwiesen werden muss. Ein alternativer Ansatz mit einem nicht leeren Bezeichner ist ebenfalls möglich:

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

Das obige ist der detaillierte Inhalt vonWarum den leeren Bezeichner in Gos Schnittstellenbehauptungen zur Kompilierungszeit verwenden?. 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