© Liashko/Shutterstock.com
Entwickler Magazin
Musterhaft

Kolumne: Die Golumne

Go ist nicht unbedingt eine spektakuläre Sprache. Vielmehr ist sie pragmatisch ausgerichtet, nutzt sie doch von vielen Paradigmen praktische Elemente und vermischt diese teilweise elegant. Doch hier soll es um die Standardbibliothek gehen. Natürlich ließe sich auch ein anderer Ansatz verfolgen. Demnach würde eine Sprache mit nichts außer einem API zum Betriebssystem ausgeliefert und alles Weitere obliegt der Entwicklerin beziehungsweise der Nutzung externer Bibliotheken. Doch wir brauchen nicht viel, um uns das hieraus erwachsende Desaster vorzustellen. Daher erfreuen wir uns an dem guten Mitbringsel einer Sprache.

Frank Müller


Die Standardbibliotheken müssen nicht alles abdecken, das wäre zu viel erwartet. Doch gewisse Blöcke gehören dazu, wie die Anknüpfung des Betriebssystems, der Umgang mit Dateien, die Kommunikation über das Netzwerk und heute auch Kryptographie. Einer der wichtigsten Datentypen für die Speicherung in Dateien und Datenbanken oder den Versand über das Netz bleiben Textdateien, z. B. das Konvertieren, Encoding oder Erstellen von strukturierten oder unstrukturierten Daten. So wird das Erstellen oder Parsen von JSON [1] oder XML über eine auf Reflection basierende Technologie ermöglicht. Externe Bibliotheken bieten Vergleichbares auch für YAML [2].Für das Erstellen von Text im Allgemeinen und HTML im Speziellen gibt es eine weitere Möglichkeit. Go bietet zwei entsprechende Packages, text/template für Text und html/template für HTML. Das HTML-Paket basiert auf der Engine im Textpaket, erweitert es jedoch um ein korrektes Encoding und eine Absicherung gegen Code-Injection. Neben der Templateverarbeitung stehen hierfür auch noch Extrafunktionen zur Verfügung. Fangen wir mit der eigentlichen Engine an. Der hierfür notwendige Parser befindet sich im Package text/template/parse und liefert einen interessanten Einblick in die Mechanismen, ist jedoch nicht für den direkten Gebrauch gedacht. Dafür eignen sich die beiden genannten Packages mit einem kompakten API. Eine einfache Instanz eines Templates erzeugen wir nur vorbereitend mit einem einfachen tmpl := template.New("name"). Es kann jedoch noch nichts, da es ja noch keine Vorlage analysiert hat. Das muss immer erst mit einer der Parse-Methoden erfolgen. Ihre verschiedenen Varianten betrachte ich noch gleich. Sofern eine analysierte Vorlage beziehungsweise die analysierten Vorlagen fehlerfrei sind, stehen sie für eine Anwendung auf eine übergebene Menge Daten via Execute() zur Verfügung. Das kann auch nebenläufig erfolgen, wobei dann aber natürlich bei den Schreibzielen aufgepasst werden muss. Hier hat die Entwicklerin bei Bedarf für eine korrekte Synchronisation zu sorgen. Das mag jetzt zugegebenermaßen etwas sperrig klingen, ist dafür dann in der Nutzung leichter als gedacht. Listing 1 verdeutlicht hier den Gebrauch. Es wird zuerst eine Instanz mit dem internen Namen greeting erzeugt sowie eine statische Vorlage mit Parse(text string) analysiert. Der im Beispiel enthaltene Block in der Form {{...}} verdeutlicht dabei schon, wie Templateanweisungen in die Vorlage eingearbeitet werden. Mit tmpl.ParseFiles(filename...

Entwickler Magazin
Musterhaft

Kolumne: Die Golumne

Go ist nicht unbedingt eine spektakuläre Sprache. Vielmehr ist sie pragmatisch ausgerichtet, nutzt sie doch von vielen Paradigmen praktische Elemente und vermischt diese teilweise elegant. Doch hier soll es um die Standardbibliothek gehen. Natürlich ließe sich auch ein anderer Ansatz verfolgen. Demnach würde eine Sprache mit nichts außer einem API zum Betriebssystem ausgeliefert und alles Weitere obliegt der Entwicklerin beziehungsweise der Nutzung externer Bibliotheken. Doch wir brauchen nicht viel, um uns das hieraus erwachsende Desaster vorzustellen. Daher erfreuen wir uns an dem guten Mitbringsel einer Sprache.

Frank Müller


Die Standardbibliotheken müssen nicht alles abdecken, das wäre zu viel erwartet. Doch gewisse Blöcke gehören dazu, wie die Anknüpfung des Betriebssystems, der Umgang mit Dateien, die Kommunikation über das Netzwerk und heute auch Kryptographie. Einer der wichtigsten Datentypen für die Speicherung in Dateien und Datenbanken oder den Versand über das Netz bleiben Textdateien, z. B. das Konvertieren, Encoding oder Erstellen von strukturierten oder unstrukturierten Daten. So wird das Erstellen oder Parsen von JSON [1] oder XML über eine auf Reflection basierende Technologie ermöglicht. Externe Bibliotheken bieten Vergleichbares auch für YAML [2].Für das Erstellen von Text im Allgemeinen und HTML im Speziellen gibt es eine weitere Möglichkeit. Go bietet zwei entsprechende Packages, text/template für Text und html/template für HTML. Das HTML-Paket basiert auf der Engine im Textpaket, erweitert es jedoch um ein korrektes Encoding und eine Absicherung gegen Code-Injection. Neben der Templateverarbeitung stehen hierfür auch noch Extrafunktionen zur Verfügung. Fangen wir mit der eigentlichen Engine an. Der hierfür notwendige Parser befindet sich im Package text/template/parse und liefert einen interessanten Einblick in die Mechanismen, ist jedoch nicht für den direkten Gebrauch gedacht. Dafür eignen sich die beiden genannten Packages mit einem kompakten API. Eine einfache Instanz eines Templates erzeugen wir nur vorbereitend mit einem einfachen tmpl := template.New("name"). Es kann jedoch noch nichts, da es ja noch keine Vorlage analysiert hat. Das muss immer erst mit einer der Parse-Methoden erfolgen. Ihre verschiedenen Varianten betrachte ich noch gleich. Sofern eine analysierte Vorlage beziehungsweise die analysierten Vorlagen fehlerfrei sind, stehen sie für eine Anwendung auf eine übergebene Menge Daten via Execute() zur Verfügung. Das kann auch nebenläufig erfolgen, wobei dann aber natürlich bei den Schreibzielen aufgepasst werden muss. Hier hat die Entwicklerin bei Bedarf für eine korrekte Synchronisation zu sorgen. Das mag jetzt zugegebenermaßen etwas sperrig klingen, ist dafür dann in der Nutzung leichter als gedacht. Listing 1 verdeutlicht hier den Gebrauch. Es wird zuerst eine Instanz mit dem internen Namen greeting erzeugt sowie eine statische Vorlage mit Parse(text string) analysiert. Der im Beispiel enthaltene Block in der Form {{...}} verdeutlicht dabei schon, wie Templateanweisungen in die Vorlage eingearbeitet werden. Mit tmpl.ParseFiles(filename...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang