Einführung
Go, auch bekannt als Golang oder Go, ist eine von Google entwickelte Open-Source-Programmiersprache. Softwareentwickler nutzen Go auf einer Vielzahl von Plattformen und Frameworks, um Webanwendungen, Cloud- und Netzwerkdienste sowie andere Softwaretypen zu entwickeln.
Go ist statisch typisiert, explizit und an die Programmiersprache C angelehnt. Die kurze Startzeit, der geringe Laufzeit-Overhead und die Möglichkeit, ohne virtuelle Maschine (VM) zu arbeiten, haben Go zu einer sehr beliebten Sprache für die Entwicklung von Microservices und anderen Anwendungen gemacht. Darüber hinaus wird Go für die nebenläufige Programmierung eingesetzt – die Strategie, mehrere Aufgaben gleichzeitig, in beliebiger Reihenfolge oder teilweise auszuführen.
Go ist von der Effizienz und relativen Einfachheit von Python inspiriert. Es verwendet Goroutinen, also leichtgewichtige Prozesse, und eine Reihe von Paketen für effizientes Abhängigkeitsmanagement. Go wurde entwickelt, um verschiedene Probleme zu lösen, darunter lange Kompilierzeiten, unkontrollierte Abhängigkeiten, doppelte Arbeit, Schwierigkeiten beim Schreiben automatisierter Tools und sprachübergreifende Entwicklung.
Hier sind einige der wichtigsten Merkmale von Go:
- Einfachheit: Go ist so konzipiert, dass es leicht zu erlernen und anzuwenden ist. Seine Syntax ist einfach und unkompliziert, was es zu einer guten Wahl für Anfänger und erfahrene Programmierer gleichermaßen macht.
- Parallelverarbeitung: Go bietet integrierte Unterstützung für Parallelverarbeitung, sodass Entwickler effizienten und skalierbaren Code für Mehrkern- und verteilte Systeme schreiben können.
- Speicherbereinigung: Go verfügt über eine automatische Speicherverwaltung, die Entwickler von der Sorge um Speicherzuweisung und -freigabe befreit.
- Kurze Kompilierzeit: Go verfügt über einen schnellen Compiler, der schnelle Iterationen während der Entwicklung ermöglicht.
- Plattformübergreifende Unterstützung: Go kann so kompiliert werden, dass es auf vielen verschiedenen Plattformen läuft, darunter Windows, Linux und macOS.
- Starke Typisierung: Go ist eine statisch typisierte Sprache, die dabei hilft, Fehler bereits zur Kompilierzeit und nicht erst zur Laufzeit zu erkennen.
- Go verfügt über eine große und stetig wachsende Entwicklergemeinschaft und wird von vielen bekannten Unternehmen wie Google, Uber und Dropbox eingesetzt.
Hier einige wichtige Punkte zur Programmiersprache Go:
- Go ist eine statisch typisierte Sprache, das heißt, der Typ einer Variablen muss deklariert werden, bevor sie verwendet werden kann.
- Go verfügt über einen integrierten Garbage Collector, der automatisch Speicher freigibt, wenn dieser nicht mehr benötigt wird.
- Go bietet eine starke Unterstützung für Parallelverarbeitung, sodass Entwickler effizienten und skalierbaren Code für Mehrkern- und verteilte Systeme schreiben können.
- Go verfügt über eine minimalistische Syntax, die leicht zu erlernen und zu lesen ist.
- Go verfügt über einen schnellen Compiler, der Code erzeugt, der für moderne Hardwarearchitekturen optimiert ist.
- Go verfügt über eine Standardbibliothek, die eine breite Palette von Funktionen unterstützt, darunter Netzwerkfunktionen, Verschlüsselung und Dateiverwaltung.
- Go verfügt über eine wachsende Entwicklergemeinschaft und ein dynamisches Ökosystem an Drittanbieterpaketen und -tools.
- Go wird von vielen namhaften Unternehmen zur Entwicklung groß angelegter verteilter Systeme und leistungsstarker Anwendungen eingesetzt.
- Insgesamt ist Go eine leistungsstarke und effiziente Programmiersprache, die sich hervorragend für die Entwicklung moderner Anwendungen und verteilter Systeme eignet. Ihre starke Unterstützung für Parallelverarbeitung und ihre minimalistische Syntax machen sie zu einer attraktiven Wahl für Entwickler, die skalierbare und effiziente Anwendungen erstellen möchten.
Go verfügt außerdem über eine einfache Syntax und ein einfaches Typsystem, wodurch es auch für Personen ohne vorherige Programmiererfahrung leicht zu erlernen und anzuwenden ist.
Hier ist ein “Hello World”-Programm in Go:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}Es gibt verschiedene Online-IDEs wie The Go Playground, repl.it usw., mit denen Go-Programme ohne Installation ausgeführt werden können.
Um Go auf Ihrem PC oder Laptop zu installieren, benötigen wir die folgenden beiden Softwareprogramme: Texteditor und Compiler.
Texteditor: Ein Texteditor bietet Ihnen eine Plattform zum Schreiben Ihres Quellcodes. Die Liste der Texteditoren finden Sie unten:
- Windows Notepad
- OS Edit-Befehl
- Knapp
- Epsilon
- vm oder vi
- Emacs
- VS Code
Einen Go-Compiler finden: Die Go-Distribution ist als installierbare Binärdatei für FreeBSD (Version 8 und höher), Linux, Mac OS X (Snow Leopard und höher) und Windows-Betriebssysteme mit 32-Bit- (386) und 64-Bit- (amd64) x86-Prozessorarchitekturen verfügbar.
Schreiben Ihres ersten Programms in Go:
package main
import "fmt"
func main() {
// prints geeksforgeeks
fmt.Println("Hello, geeksforgeeks")
}Erläuterung der Go-Programmsyntax:
Zeile 1: Enthält das Hauptprogrammpaket, das den gesamten Programminhalt umfasst. Es ist der Startpunkt für die Programmausführung und muss daher zwingend angegeben werden.
Zeile 2: Enthält die Importanweisung “fmt”. In Go (Golang) werden mit der Importanweisung externe Pakete eingebunden, die über die integrierten Sprachfunktionen hinaus zusätzliche Funktionalität bereitstellen. In diesem Fall ist “fmt” ein Paket, das Funktionen zur Formatierung von Ein- und Ausgaben bereitstellt.
Zeile 3: Die Hauptfunktion startet die Programmausführung.
Zeile 4: `fmt.Println()` ist eine Standardbibliotheksfunktion, die eine Ausgabe auf dem Bildschirm erzeugt. In diesem Paket ist die `Println`-Methode von `fmt` enthalten, die zur Anzeige der Ausgabe verwendet wird.
Anmerkung: Kommentare dienen der Erläuterung von Code und werden in Java, C und C++ ähnlich verwendet. Compiler ignorieren Kommentare und führen sie nicht aus. Kommentare können einzeilig oder mehrzeilig sein.
Warum diese “Go-Sprache”?
Go ist der Versuch, die einfache Programmierbarkeit einer interpretierten und dynamisch typisierten Sprache mit der Effizienz und Sicherheit einer typisierten und kompilierten Sprache zu verbinden. Zudem soll es modern sein und Netzwerk- sowie Mehrkernprozessoren unterstützen.
Was gibt es in anderen Sprachen außer Go?
- Go zielt darauf ab, den Tippaufwand in beiderlei Hinsicht zu reduzieren. Die Entwickler haben während des gesamten Designprozesses darauf geachtet, Unübersichtlichkeit und Komplexität zu minimieren.
- Es gibt keine Vorwärtsdeklarationen und keine Header-Dateien. Alles wird genau einmal deklariert.
- Das Stottern wird durch einfache Typableitung mittels des := Deklarations- und Initialisierungskonstrukts reduziert.
- Es gibt keinerlei Hierarchie: Die Typen existieren einfach, sie müssen ihre Beziehungen nicht deklarieren.
Hardwarebeschränkungen
Wir haben beobachtet, dass sich Hardwarekonfiguration und Prozessorleistung innerhalb eines Jahrzehnts nur sehr langsam verändern. Im Jahr 2004 hatte der Pentium 4 eine Taktfrequenz von 3,0 GHz, während das MacBook Pro im Jahr 2018 nur noch knapp 2,3 GHz (gegenüber 2,66 GHz) aufweist. Um die Leistung zu steigern, setzen wir auf leistungsstärkere Prozessoren, was jedoch die Kosten erhöht. Daher verwenden wir oft Prozessoren mit begrenzter Kapazität. Diese wiederum erfordern ressourcenintensive Programmiersprachen, deren Threading viel Speicher benötigt und die Systemleistung beeinträchtigt. Um dieses Problem zu lösen, verwendet Golang anstelle von Threads Goroutinen. Diese ähneln Threads, benötigen aber deutlich weniger Speicher.
So wie Threads 1 MB und Goroutinen 2 KB Speicher belegen, können wir gleichzeitig Millionen von Goroutinen starten.
Der oben genannte Punkt macht Golang zu einer leistungsstarken Sprache, die gleichzeitig C++ und Java beherrscht.
Vor- und Nachteile der Go-Sprache
Vorteile:
- Flexibel – prägnant, einfach und gut lesbar.
- Parallelverarbeitung – Dies ermöglicht es, mehrere Prozesse gleichzeitig und effizient auszuführen.
- Schnelles Ergebnis – die Kompilierungszeit ist sehr kurz.
- Bibliothek – Bietet eine umfangreiche Standardbibliothek.
- Garbage Collection – Eine der wichtigsten Eigenschaften von Go ist, dass Go eine hohe Kontrolle über die Speicherverwaltung bietet und die Latenz in den neuesten Versionen der Garbage Collection drastisch reduziert hat.
- Prüft die Einbettung von Schnittstellen und Typen.
- Parallelverarbeitung: Go bietet hervorragende Unterstützung für Parallelverarbeitung und ermöglicht so das einfache Schreiben von Code, der mehrere Aufgaben gleichzeitig ausführen kann. Dies wird durch Goroutinen und Kanäle erreicht, mit denen Sie Code schreiben können, der mehrere Operationen gleichzeitig ausführt.
- Leistung: Go ist auf Geschwindigkeit und Effizienz ausgelegt, mit Fokus auf Performance und geringem Speicherverbrauch. Dadurch eignet es sich hervorragend für die Entwicklung leistungsstarker Netzwerkdienste sowie für die Lösung komplexer Rechenprobleme.
- Einfachheit: Go verfügt über eine einfache Syntax und ein einfaches Typsystem, wodurch es auch für Personen ohne vorherige Programmiererfahrung leicht zu erlernen und anzuwenden ist.
- Speicherbereinigung: Go verfügt über eine integrierte Speicherbereinigung, die den Speicher automatisch verwaltet. Dadurch entfällt die manuelle Speicherverwaltung und das Risiko von Speicherlecks und anderen Fehlern, die durch manuelle Speicherverwaltung entstehen können, wird reduziert.
- Statisch typisiert: Go ist eine statisch typisierte Sprache, d. h. die Typen werden zur Kompilierzeit festgelegt. Dies sorgt für eine höhere Typsicherheit und erleichtert das Erkennen von Typfehlern, bevor sie auftreten.
Nachteile:
- Es bietet keine Unterstützung für Generika, obwohl darüber viel diskutiert wird.
- Die mit dieser Programmiersprache mitgelieferten Pakete sind sehr nützlich, aber Go ist im herkömmlichen Sinne nicht sehr objektorientiert.
- Es fehlen einige Bibliotheken, insbesondere ein UI-Toolkit.
- Eingeschränkte objektorientierte Funktionen: Go fehlen vollständige objektorientierte Funktionen wie Vererbung und Polymorphismus. Dies kann das Schreiben komplexer Programme erschweren, insbesondere für Entwickler, die an traditionelle objektorientierte Sprachen gewöhnt sind.
- Keine Generics: Go bietet keine integrierte Unterstützung für Generics, was das Schreiben wiederverwendbaren Codes erschwert.
- Unreife Standardbibliothek: Die Go-Standardbibliothek ist relativ neu und noch in der Entwicklung, was es schwierig machen kann, die für eine bestimmte Aufgabe benötigten Werkzeuge zu finden.
Einige beliebte Anwendungen, die in der Programmiersprache Go entwickelt wurden
- Docker: Eine Sammlung von Tools zum Bereitstellen von Linux-Containern
- Openshift: Eine Cloud-Computing-Plattform als Dienstleistung von Red Hat.
- Kubernetes: Die Zukunft einheitlicher automatisierter Bereitstellungsprozesse
- Dropbox: Hat einige seiner kritischen Komponenten von Python auf Go umgestellt.
- Netflix: Für zwei Teile ihrer Serverarchitektur.
- InfluxDB: ist eine Open-Source-Zeitreihendatenbank, die von InfluxData entwickelt wurde.
- Golang: Die Sprache selbst ist in Go geschrieben.









