{"id":201884,"date":"2025-01-16T13:55:14","date_gmt":"2025-01-16T12:55:14","guid":{"rendered":"https:\/\/liora.io\/de\/?p=201884"},"modified":"2026-02-06T05:47:52","modified_gmt":"2026-02-06T04:47:52","slug":"einfuehrung-in-die-go-entwicklung","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/einfuehrung-in-die-go-entwicklung","title":{"rendered":"Einf\u00fchrung in die Go-Entwicklung: Grundlagen, Tools und Best Practices"},"content":{"rendered":"<p><strong><b>Golang, oft einfach als Go bezeichnet, ist eine Open-Source-Programmiersprache, die von Google entwickelt und 2009 ver\u00f6ffentlicht wurde. Die von Robert Griesemer, Rob Pike und Ken Thompson entworfene Sprache zielt darauf ab, eine schnelle, effiziente und leicht wartbare L\u00f6sung f\u00fcr die moderne Softwareentwicklung zu bieten, insbesondere in verteilten Systemen, der Cloud und Backend-Infrastrukturen.<\/b><\/strong><\/p>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"617\" height=\"349\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/createurs-golang.webp\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/createurs-golang.webp 617w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/createurs-golang-300x170.webp 300w\" sizes=\"(max-width: 617px) 100vw, 617px\">\t\t\t\t\t\t\t\t\t\t\t<figcaption>Die drei Erfinder von Go, von links nach rechts, Robert Griesemer, Rob Pike und Ken Thompson<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t<h3>F\u00fcr welche Anwendungsbereiche?<\/h3>\t\t\n\t\t<p>Die <a href=\"https:\/\/liora.io\/de\/go-sprache\">Go-Sprache<\/a> erregt besonderes Interesse in verschiedenen Bereichen, insbesondere:<\/p><ul><li><b>Cloud- und verteilte Systeme<\/b>: Go wird h\u00e4ufig in Cloud-Computing-Umgebungen eingesetzt und ist besonders f\u00fcr Cloud-native Anwendungen und Microservices gesch\u00e4tzt.<\/li><li><b>Backend-Infrastrukturen<\/b>: Als eine sehr leistungsf\u00e4hige, kompilierte Sprache ist Go eine hervorragende Option f\u00fcr Backends gro\u00dfer Plattformen wie Datenverwaltungssysteme und APIs.<\/li><li><b>Webdienste<\/b>: Viele Unternehmen nutzen es zur Entwicklung zuverl\u00e4ssiger und skalierbarer Go-Programme, wie <a href=\"https:\/\/liora.io\/de\/docker-was-ist-das-denn-und-wie-wird-es-benutzt\">Docker<\/a> oder <a href=\"https:\/\/liora.io\/de\/kubernetes-schulung-lerne-dieses-orchestrierungswerkzeug-zu-nutzen\">Kubernetes<\/a>.<\/li><\/ul>\t\t\n\t\t\t<h3>Vorteile und Nachteile<\/h3>\t\t\n\t\t<p>Golang bietet viele Vorteile, hat aber auch Nachteile, die ber\u00fccksichtigt werden sollten.<\/p>\t\t\n\t\t\t<h4>Vorteile<\/h4>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/image1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/image1.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/image1-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/image1-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t<h4>Nachteile<\/h4>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/image4.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/image4.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/image4-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2025\/01\/image4-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t<p><b>Einfachheit<\/b>: Die Syntax ist einfach, klar und leicht zu lesen.<\/p><p><b>Keine Generika<\/b>: Bis vor Kurzem bot Go keine Generika an, was die Handhabung einiger Datenstrukturen erschweren konnte.<\/p><p><b>Hohe Leistung<\/b>: Go ist eine kompilierte Sprache, was schnelle Ausf\u00fchrungszeiten erm\u00f6glicht, vergleichbar mit der Leistung von <strong>C<\/strong> oder <a href=\"https:\/\/liora.io\/de\/c-was-die-meisten-nicht-wissen\">C++<\/a>.<\/p><p><b>Einfachheit der Syntax<\/b>: Die Einfachheit kann ihren Preis haben. Beispielsweise fehlt der Sprache manche fortgeschrittene Abstraktion, die in anderen Sprachen zu finden ist.<\/p><p><b>Konkurrenzverwaltung<\/b>: Die Goroutinen sind ein leistungsstarker Mechanismus, um Konkurrenz effektiv und einfach zu verwalten.<\/p><p><b>Fehlerbehandlung<\/b>: Die Behandlung von Fehlern ist bewusst ausf\u00fchrlich, was den Go-Code l\u00e4nger und schwieriger lesbar machen kann.<\/p><p><b>Cross-Kompilierung<\/b>: Go erm\u00f6glicht es, den Quellcode mit sehr wenig Aufwand f\u00fcr mehrere Plattformen zu kompilieren.<\/p><p><b>Reiches \u00d6kosystem von Bibliotheken<\/b>: Es bietet ein reichhaltiges \u00d6kosystem an Bibliotheken und Werkzeugen.<\/p>\t\t\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Sich in Golang weiterbilden<\/a><\/div><\/div>\n\n\t\t\t<h3>Spracheigenschaften<\/h3>\t\t\n\t\t<p>Go ist eine Sprache, die der C-Syntax relativ \u00e4hnlich ist.<\/p>\t\t\n\t\t\t<h4><font size=\"4\">Die Pakete<\/font><\/h4>\t\t\n\t\t<p>Ein Paket (package) ist eine Einheit der Modularit\u00e4t und Verteilung. Jede Go-Datei geh\u00f6rt zu einem Paket, und Pakete erm\u00f6glichen die Wiederverwendung von Code in strukturierter Weise.<\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>package main<\/b>: Dieses spezielle Paket gibt den Einstiegspunkt eines ausf\u00fchrbaren Programms an. Wenn Du eine Anwendung entwickelst, muss sie das Paket main enthalten.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Andere Pakete k\u00f6nnen importiert werden, um zus\u00e4tzliche Funktionen bereitzustellen, wie z.B. fmt f\u00fcr die Ein-\/Ausgabesteuerung.<\/li>\n<\/ul>\t\t\n\t\t\t<h4><font size=\"4\">Die Importe<\/font><\/h4>\t\t\n\t\t<p>Die Importe in Go erm\u00f6glichen die Verwendung externer Pakete oder Pakete aus der Standardbibliothek, um die Funktionalit\u00e4t deines Programms zu erweitern.<\/p><p>Zum Beispiel importiert der folgende Code ein Paket (<i>fmt<\/i>) aus der Standardbibliothek:<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>import \"fmt\"<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<p>Mehrfachimporte sind folgenderma\u00dfen m\u00f6glich:<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>import (\n    \"fmt\"\n    \"time\"\n)\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t<h4><font size=\"4\">Die Funktionen<\/font><\/h4>\t\t\n\t\t<p>Funktionen in Go sind Codebl\u00f6cke, die eine spezifische Aufgabe ausf\u00fchren. Die Funktion main ist obligatorisch, da sie den Startpunkt jedes Go-Programms darstellt.<\/p><p>Die folgende Funktion, genannt <i>Hello<\/i>, nimmt einen Namen als Parameter und gibt eine Begr\u00fc\u00dfung zur\u00fcck:<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>func hello(name string) string {\n    return \"Hello, \" + name\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t<h4><font size=\"4\">Die Variablen<\/font><\/h4>\t\t\n\t\t<p>Variablen werden mit dem Schl\u00fcsselwort <b>var<\/b> deklariert, k\u00f6nnen aber auch k\u00fcrzer mit dem Operator :<b>=<\/b> f\u00fcr eine implizite Deklaration definiert werden.<\/p><p>Das folgende Beispiel zeigt eine erste Variable, die explizit als Zeichenkette und eine zweite implizit als Ganzzahl deklariert wird.<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>var message string = \"Hello World!\"\nnombre := 42<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Vertiefen auf Golang<\/a><\/div><\/div>\n\n\t\t\t<h4><font size=\"4\">Der Typ<\/font><\/h4>\t\t\n\t\t<p>Go ist eine statisch typisierte Sprache: Jeder Variable wird beim Kompilieren ein Typ zugeordnet.<\/p>\t\t\n\t\t\t<h4><font size=\"4\">Der Kontrollfluss<\/font><\/h4>\t\t\n\t\t<p>In Go umfasst der Kontrollfluss die klassischen Anweisungen wie <b>if\u2026else, for<\/b> und <b>switch<\/b>. Allerdings besitzt sie keine <b>while<\/b>-Schleife, obwohl <b>for<\/b> in \u00e4hnlicher Weise verwendet werden kann.<\/p><p>Hier druckt die Schleife die Zahlen von 0 bis 9 aus:<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>for i := 0; i < 10; i++ {\n    fmt.Println(i)\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<p>Die folgende <i>if<\/i>-Schleife zeigt an, ob die Zahl gerade oder ungerade ist:<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>number := 7\nif number%2 == 0 {\n    fmt.Println(\"The number is even\")\n} else {\n    fmt.Println(\"The number is odd\")\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<p>Die folgende <i>switch<\/i>-Anweisung bewertet den Wert in der Variablen <i>day<\/i> und f\u00fchrt den entsprechenden Block aus:<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>day := \"tuesday\"\nswitch day {\ncase \"monday\":\n    fmt.Println(\"Start of the week\")\ncase \"tuesday\":\n    fmt.Println(\"Second day of the week\")\ncase \"wednesday\":\n    fmt.Println(\"Middle of the week\")\ndefault:\n    fmt.Println(\"Day not specified\")\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t<h4><font size=\"4\">Datenstrukturen<\/font><\/h4>\t\t\n\t\t<p>Es gibt mehrere m\u00f6gliche Datenstrukturen, wie Arrays, Slices, Maps und Structs.<\/p><ul><li>Die <b>slices<\/b> bieten eine flexible M\u00f6glichkeit, Datenfolgen zu handhaben:<\/li><\/ul>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>numbers := []int{1, 2, 3, 4, 5}\nfmt.Println(numbers)<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<ul><li>Die <b>maps<\/b> sind eine Sammlung von Schl\u00fcssel-Wert-Paaren, \u00e4hnlich den W\u00f6rterb\u00fcchern in anderen Sprachen:<\/li><\/ul>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>capitals := map[string]string{\"France\": \"Paris\", \"Italy\": \"Roma\"}\nfmt.Println(capitals[\"France\"])<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Die Sprache Golang beherrschen<\/a><\/div><\/div>\n\n\t\t\t<h4><font size=\"4\">Grundlegende Befehle<\/font><\/h4>\t\t\n\t\t<p>Golang verf\u00fcgt \u00fcber mehrere grundlegende Befehle, um die Verwaltung und Ausf\u00fchrung von Code zu erleichtern:<\/p><ul><li><b>go fmt<\/b>: Formatiert den Go-Code automatisch, um ihn leichter lesbar zu machen.<\/li><li><b>go run<\/b>: Kompiliert und f\u00fchrt den Go-Code direkt aus.<\/li><li><b>go test<\/b>: Bietet ein integriertes Framework zum Schreiben und Ausf\u00fchren von Unit-Tests.<\/li><li><b>go build<\/b>: Kompiliert den Quellcode, um eine ausf\u00fchrbare Datei zu erstellen.<\/li><\/ul>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>capitals := map[string]string{\"France\": \"Paris\", \"Italy\": \"Roma\"}\nfmt.Println(capitals[\"France\"])<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t<h3>Goroutine und Konkurrenz<\/h3>\t\t\n\t\t<p>Eines der st\u00e4rksten Merkmale von Go ist die F\u00e4higkeit, mit Goroutinen Konkurrenz zu verwalten. Das sind Funktionen, die zeitgleich mit dem Rest des Programms ausgef\u00fchrt werden. Um eine Goroutine zu starten, reicht es aus, einen Funktionsaufruf mit dem Schl\u00fcsselwort <b>go<\/b> zu pr\u00e4fixen.<\/p><p>Hier ein Beispiel:<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>package main\nimport (\n    \"fmt\"\n    \"time\"\n)\nfunc worker(mytask string) {\n    for i := 0; i < 3; i++ {\n        fmt.Printf(\"%s : iteration %dn\", mytask, i)\n        time.Sleep(500 * time.Millisecond)\n    }\n}\nfunc main() {\n    go worker(\"Task1\")\n    go worker(\"Task2\")\n    worker(\"Main task\")\n    \/\/ Waiting for goroutine to end\n    time.Sleep(2 * time.Second)\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<p>Die Goroutinen <i>Task1<\/i> und <i>Task2<\/i> laufen parallel mit der <i>Main task<\/i>.<\/p>\t\t\n\t\t\t<h3>Fazit<\/h3>\t\t\n\t\t<p><a href=\"https:\/\/liora.io\/de\/golang-vs-python\">Golang ist eine leistungsstarke Sprache<\/a>. Ihre Einfachheit, die effektive Verwaltung von Konkurrenz durch Goroutinen und die Qualit\u00e4t ihrer Tools und Bibliotheken machen sie zu einer attraktiven Wahl f\u00fcr viele moderne Projekte.&nbsp;<\/p>\t\t\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Bilde Dich mit Liora weiter<\/a><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Golang, oft einfach als Go bezeichnet, ist eine Open-Source-Programmiersprache, die von Google entwickelt und 2009 ver\u00f6ffentlicht wurde. Die von Robert Griesemer, Rob Pike und Ken Thompson entworfene Sprache zielt darauf ab, eine schnelle, effiziente und leicht wartbare L\u00f6sung f\u00fcr die moderne Softwareentwicklung zu bieten, insbesondere in verteilten Systemen, der Cloud und Backend-Infrastrukturen. Die drei Erfinder [&hellip;]<\/p>\n","protected":false},"author":74,"featured_media":201886,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2476],"class_list":["post-201884","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-dev"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/201884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/74"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=201884"}],"version-history":[{"count":5,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/201884\/revisions"}],"predecessor-version":[{"id":216808,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/201884\/revisions\/216808"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/201886"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=201884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=201884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}