Robert Griesemer, Rob Pike, Ken Thompson
Go, auch bekannt als Golang, wurde 2009 von Robert Griesemer, Rob Pike und Ken Thompson bei Google entwickelt. Die Programmiersprache wurde für die Entwicklung von Systemsoftware und Webanwendungen konzipiert und zeichnet sich durch ihre einfache Syntax, effiziente Kompilierung und integrierte Unterstützung für Nebenläufigkeit aus.
Bekannte Beispiele für Anwendungen, die in Go entwickelt wurden, sind Docker, Kubernetes und das Web-Framework Hugo. Heutzutage ist Go immer noch äußerst relevant, insbesondere in der Cloud- und Server-Backend-Entwicklung, da es eine hohe Leistung und Skalierbarkeit bietet und von einer aktiven Entwickler-Community unterstützt wird.
Go-Programme werden in Textdateien mit der Endung .go
geschrieben. Diese Dateien werden anschließend von einem Compiler in ausführbare Dateien übersetzt, die auf deinem Computer direkt ausgeführt werden können.
Stelle zuerst sicher, dass du keinen Ordner geöffnet hast. Um sicherzugehen, drücke einfach den Shortcut für »Ordner schließen«: StrgK und dann F. Dein Workspace sollte jetzt ungefähr so aussehen:
Klicke auf »New File« und wähle als Dateityp »Text File«.
Schreibe nun den folgenden Code in die Datei:
1 2 3 4 5 6 7 |
package main import "fmt" func main() { fmt.Println("Hello, World!") } |
Da Visual Studio Code noch nicht weiß, dass es sich um C-Quelltext handelt, ist dein Programm momentan noch einfarbig, aber das wird sich gleich ändern. An dem weißen Punkt erkennst du, dass deine Änderungen noch nicht gespeichert sind.
Drücke nun StrgS, um die Datei zu speichern. Gib hello.go
ein – der vollständige Pfad zu deiner Datei lautet dann /workspace/hello.go
.
Sobald du die Datei gespeichert hast, wird sie automatisch als Go-Datei erkannt und die Syntax wird hervorgehoben.
Bevor wir das Programm ausführen können, müssen wir es kompilieren. Dadurch wird der Quelltext in Maschinencode übersetzt, den dein Computer ausführen kann.
Öffne dazu ein Terminal, indem du entweder StrgJ drückst oder das Panel-Symbol rechts oben drückst. Dein Fenster sollte jetzt ungefähr so aussehen:
Um das Programm zu kompilieren, gib folgenden Befehl ein:
go build hello.go
go build he
und drücke Tab, um den Dateinamen automatisch zu hello.go
vervollständigen zu lassen. Du kannst danach ganz normal weiterschreiben.
Wenn du keinen Fehler gemacht hast, wird das Programm erfolgreich kompiliert und die ausführbare Datei hello
wird im selben Verzeichnis erstellt. Du kannst dies überprüfen, indem du dir die Dateien im aktuellen Verzeichnis mit ls
oder ls -l
anzeigen lässt:
Die grüne Datei hello
ist die ausführbare Datei – im Unterschied zu Windows, wo ausführbare Dateien die Endung .exe
haben, haben ausführbare Dateien unter Linux keine Endung. Um das Programm auszuführen, gib folgenden Befehl ein:
./hello
Das Programm sollte die Nachricht Hello, World!
im Terminal ausgeben. Du kannst beide Schritte auch in einem Befehl kombinieren:
go build hello.go && ./hello
&&
sorgt dafür, dass der zweite Befehl nur ausgeführt wird, wenn der erste erfolgreich war.
Go bietet hierfür auch einen Shortcut an, der das Kompilieren und Ausführen in einem Schritt erledigt (dann wird die temporäre, ausführbare Datei nach der Ausführung wieder gelöscht):
go run hello.go
Wenn du einen Fehler im Code machst, wird der Compiler eine Fehlermeldung ausgeben. Versuche zum Beispiel, statt Println
das Wort Printn
zu schreiben:
fmt.Printn("Hello, World!")
Speichere die Datei und führe den Compiler erneut aus:
go run hello.go
Der Compiler sollte eine Fehlermeldung ausgeben, die dir hilft, den Fehler zu finden:
Es lohnt sich, die Fehlermeldungen genau zu lesen, um den Fehler zu finden und zu beheben. Achte auf die Zeilennummer (in diesem Beispiel 6) und den Text, der dir sagt, was falsch ist. Denke daran, den Fehler wieder zu beheben, bevor du das nächste Beispiel ausprobierst.
Im zweiten Beispiel wollen wir eine Zahl in ihre Primfaktoren zerlegen. An diesem Beispiel kannst du sehen, wie man in Go Benutzereingaben verarbeitet und Schleifen verwendet. Erstelle eine neue Datei mit StrgAltN und schreibe den folgenden Code hinein:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package main import ( "fmt" "math" ) func main() { var num int fmt.Print("Enter a number: ") fmt.Scan(&num) fmt.Printf("Prime factors of %d are: ", num) for i := 2; i <= int(math.Sqrt(float64(num))); i++ { for num%i == 0 { fmt.Printf("%d ", i) num /= i } } if num > 1 { fmt.Printf("%d ", num) } fmt.Printf("\n"); } |
Speichere die Datei unter dem Namen factor.go
und führe sie aus:
Das Programm hat die Zahl 123 in ihre Primfaktoren zerlegt und ausgegeben. Anders als andere Programmiersprachen kann Go auch die Zahl 3000000000 in Sekundenbruchteilen zerlegen. Auch mit einer sehr großen Zahl wie 123456789123456789 kommt das Programm problemlos zurecht. Falls du auf eine Zahl stoßen solltest, die so groß ist, dass das Programm sehr lange braucht, kannst du das Programm mit StrgC abbrechen.
Im dritten Beispiel wollen wir eine Liste von 10 Zufallszahlen sortieren. Dafür verwenden wir den Bubblesort-Algorithmus, der zwar nicht besonders effizient ist, aber sehr einfach zu verstehen und zu implementieren. Der Bubblesort-Algorithmus funktioniert, indem er die Liste mehrmals durchläuft und benachbarte Elemente vertauscht, wenn sie in der falschen Reihenfolge sind.
An diesem Beispiel kannst du sehen, wie man in Go Listen verwendet, Funktionen verwendet und Schleifen verschachtelt.
Erstelle eine neue Datei und schreibe den folgenden Code hinein:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package main import ( "fmt" "math/rand" "time" ) func main() { // Seed the random number generator rand.Seed(time.Now().UnixNano()) // Create an array of 10 random integers numbers := make([]int, 10) for i := 0; i < 10; i++ { numbers[i] = rand.Intn(100) } // Print the original array fmt.Println("Original array:", numbers) // Sort the array using bubble sort bubbleSort(numbers) // Print the sorted array fmt.Println("Sorted array:", numbers) } func bubbleSort(numbers []int) { n := len(numbers) for i := 0; i < n-1; i++ { for j := 0; j < n-i-1; j++ { if numbers[j] > numbers[j+1] { // Swap numbers[j] and numbers[j+1] numbers[j], numbers[j+1] = numbers[j+1], numbers[j] } } } } |
Speichere das Programm unter dem Namen bubblesort.go
und führe es aus:
Das Programm hat eine Liste von 10 Zufallszahlen sortiert. Versuche, den Quelltext so zu verändern, dass statt 10 Zahlen 100 oder mehr Zahlen sortiert werden.
In diesem Kapitel hast du an drei Beispielen gesehen, wie man ein einfaches Go-Programm schreiben und ausführen kann. Das ist natürlich nur ein erster Eindruck. Um Go wirklich zu beherrschen, musst du noch viel mehr lernen – am besten, indem du eigene Skripte schreibst und ausprobierst. Die Buchhandlungen, Bibliotheken und Youtube sind voll von Material für dich. Viel Spaß beim Programmieren!