Kurz: Go ist eine kompilierte, statisch typisierte Sprache mit Garbage Collector. Entworfen wurde sie, weil große Systeme bei Google mit C++ und Java zu langsam zu bauen und zu kompliziert waren. Die Ziele.
Teil des Kurses Go
Go ist eine kompilierte, statisch typisierte Sprache mit Garbage Collector. Entworfen wurde sie, weil große Systeme bei Google mit C++ und Java zu langsam zu bauen und zu kompliziert waren. Die Ziele: Einfachheit, Lesbarkeit, schnelle Builds und gute Nebenläufigkeit.
Eigenschaften
- Schnelles Übersetzen: Auch große Projekte sind in Sekunden gebaut
- Ein Binärprogramm:
go builderzeugt eine einzelne Datei ohne Laufzeit-Abhängigkeiten, ideal für Server und Container - Nebenläufigkeit durch Goroutinen und Channels
- Garbage Collector statt manueller Speicherverwaltung
- Eine Art, Dinge zu tun:
gofmtformatiert Code einheitlich, wenige Sprachmittel - Umfangreiche Standardbibliothek (HTTP-Server, JSON, Tests, Kryptografie)
- Strukturelle Typisierung von Interfaces: ohne
implements - Keine Klassen, keine Vererbung, keine Ausnahmen, bis Version 1.18 keine Generics (inzwischen vorhanden)
Wo wird Go eingesetzt?
| Bereich | Beispiele |
|---|---|
| Cloud und Infrastruktur | Docker, Kubernetes, Terraform, Prometheus |
| Webdienste und APIs | Microservices, Backends |
| Kommandozeilenwerkzeuge | GitHub CLI, Hugo, Caddy |
| Netzwerk und Datenbanken | CockroachDB, InfluxDB |
Werkzeuge
| Befehl | Zweck |
|---|---|
go run main.go | übersetzen und ausführen |
go build | Programm erzeugen |
go test ./... | alle Tests ausführen |
go fmt ./... | Code formatieren |
go vet ./... | verdächtigen Code finden |
go mod init name | neues Modul anlegen |
go get paket | Abhängigkeit hinzufügen |
go doc fmt.Println | Dokumentation ansehen |
Dein erstes Programm
main.go
package main
import "fmt"
func main() {
fmt.Println("Hallo, Welt!")
}Ausgabe:
Hallo, Welt!package mainkennzeichnet ein ausführbares Programmimport "fmt"holt das Paket für formatierte Ein- und Ausgabefunc main()ist der Einstiegspunkt- Es gibt keine Semikolons (der Compiler setzt sie automatisch) und die geschweiften Klammern stehen immer in der Zeile des Kopfes
Ungenutztes ist ein Fehler
Go ist streng: Eine importierte, aber nicht benutzte Bibliothek oder eine nicht benutzte Variable ist ein Compilerfehler. Das hält den Code sauber:
package main
import "fmt"
func main() {
ungenutzt := 5
fmt.Println("Hallo")
}Fehlermeldung:
declared and not used: ungenutztMerke
- Go ist kompiliert, schnell, einfach und für Server und Cloud gebaut
go run,go build,go test,go fmtsind die Alltagswerkzeuge- Ein Programm beginnt in
package mainmitfunc main() - Ungenutzte Variablen und Importe sind Fehler
- Stärken: Goroutinen, Standardbibliothek, ein einziges Binärprogramm
Quiz zur Selbstkontrolle
Wie startet man eine Go-Datei direkt?
- go run main.go (richtig)
- go start main.go
- gorun main.go
- java main.go
Was passiert bei einer ungenutzten Variable in Go?
- Compilerfehler (richtig)
- Nur eine Warnung
- Nichts
- Laufzeitfehler
Was erzeugt go build?
- Ein einzelnes ausführbares Programm (richtig)
- Eine Bytecode-Datei
- Eine DLL
- Eine JAR-Datei
Weiter im Kurs
Weiter: Variablen, Typen und Konstanten
Alle Kapitel: Go im Überblick