Der Blank Identifier `_`
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 55 von 68.
Manchmal müssen Sie ein Paket importieren, nicht um dessen exportierte Funktionen oder Variablen zu verwenden, sondern um dessen Nebeneffekte auszulösen. Der häufigste Nebeneffekt ist das Ausführen der init-Funktion des Pakets, welche automatisch ausgeführt wird, wenn das Paket importiert wird.
Go stellt den leeren Bezeichner _ für diesen Zweck zur Verfügung. Wenn Sie ein Paket mit dem leeren Bezeichner importieren, importiert Go das Paket und führt jeglichen Initialisierungscode aus, verlangt aber nicht, dass Sie einen seiner exportierten Bezeichner verwenden.
import _ "database/sql/driver"Dies ist besonders nützlich, wenn ein Paket sich bei einem anderen System registrieren oder Setup-Aufgaben ausführen muss, Sie aber keine seiner Funktionen direkt in Ihrem Code aufrufen. Ohne den Blank Identifier würde Go einen Kompilierungsfehler ausgeben, da ein nicht verwendetes Paket importiert wurde.
Der Blank-Identifier teilt Go mit: „Importiere dieses Paket wegen seiner Seiteneffekte, aber ich werde nicht direkt in meinem Code darauf verweisen.“ Dies hält Ihre Imports sauber, während Sie dennoch das benötigte Initialisierungsverhalten erhalten.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Spickzettel
Verwenden Sie den leeren Bezeichner _, um Pakete für ihre Nebeneffekte zu importieren, ohne deren exportierte Funktionen zu verwenden:
import _ "database/sql/driver"Dies importiert das Paket und führt dessen Initialisierungscode aus, ohne dass Sie einen seiner exportierten Bezeichner verwenden müssen. Nützlich, wenn Pakete sich bei anderen Systemen registrieren oder Setup-Aufgaben durchführen müssen.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittener Kontrollfluss
Switch mit `fallthrough`Abbrechen von verschachtelten SchleifenFortsetzen einer bestimmten SchleifeDie `goto`-AnweisungZusammenfassung – Fortgeschrittene Schleifensteuerung4Projekt: Einfache Aufgabenliste
Projekt-SetupEine Aufgabe hinzufügen2Structs und Methoden
Methoden für Structs definierenValue ReceiverPointer ReceiverReceiver auswählenMethoden vs. FunktionenZusammenfassung – Struct-Verhalten5Maps im Detail
Maps von StructsPointer als Map-WertePrüfen auf Nil-MapsMaps vergleichenZusammenfassung – Wortfrequenz-Zähler8Projekt: Einfache Bestandsverwaltung
ProjektübersichtLagerbestand prüfen11Abschlussherausforderungen
Einfache KontaktlisteEinfacher Zahlen-ValidatorSammler für eindeutige Elemente3Interfaces (Die Grundlagen)
Was ist ein Interface?Ein Interface definierenEin Interface implementierenInterface-Typen verwendenLeeres InterfaceType AssertionsType SwitchZusammenfassung – Formen und Verhalten6Idiomatisches Go: Sets
Das Set-Idiom in GoEin Set erstellenElemente zu einem Set hinzufügenPrüfen auf MitgliedschaftAus einem Set entfernenÜber ein Set iterierenZusammenfassung – Eindeutige Benutzernamen9Packages und Scope
Was ist ein Package?Exportiert vs. Nicht-exportiertEin einfaches Package erstellenPackage-AliasingDer Blank Identifier `_`Die `init`-FunktionRecap – Erstellen eines Utilitys