EMZETT.
Login

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

Kapitel 1 von 11 im Kurs Go (Abschnitt „Einstieg“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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 build erzeugt 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: gofmt formatiert 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?

BereichBeispiele
Cloud und InfrastrukturDocker, Kubernetes, Terraform, Prometheus
Webdienste und APIsMicroservices, Backends
KommandozeilenwerkzeugeGitHub CLI, Hugo, Caddy
Netzwerk und DatenbankenCockroachDB, InfluxDB

Werkzeuge

BefehlZweck
go run main.goübersetzen und ausführen
go buildProgramm erzeugen
go test ./...alle Tests ausführen
go fmt ./...Code formatieren
go vet ./...verdächtigen Code finden
go mod init nameneues Modul anlegen
go get paketAbhängigkeit hinzufügen
go doc fmt.PrintlnDokumentation ansehen

Dein erstes Programm

main.go

package main
 
import "fmt"
 
func main() {
    fmt.Println("Hallo, Welt!")
}

Ausgabe:

Hallo, Welt!
  • package main kennzeichnet ein ausführbares Programm
  • import "fmt" holt das Paket für formatierte Ein- und Ausgabe
  • func 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: ungenutzt

Merke

  • Go ist kompiliert, schnell, einfach und für Server und Cloud gebaut
  • go run, go build, go test, go fmt sind die Alltagswerkzeuge
  • Ein Programm beginnt in package main mit func main()
  • Ungenutzte Variablen und Importe sind Fehler
  • Stärken: Goroutinen, Standardbibliothek, ein einziges Binärprogramm

Quiz zur Selbstkontrolle

Weiter im Kurs

Weiter: Variablen, Typen und Konstanten

Alle Kapitel: Go im Überblick