Go (Golang) Standardbibliothek: Ein vollständiger Überblick

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Go Standardbibliothek: Ein starkes Fundament für jede Anwendung



Die Go (Golang) Standardbibliothek ist nicht nur eine Sammlung von Hilfsprogrammen. Es ist ein sorgfältig entworfenes Ökosystem, das 80% der Anforderungen eines Entwicklers bei der Erstellung von Server-, Netzwerk- und Konsolenanwendungen abdeckt. Im Gegensatz zu vielen Sprachen, in denen die Standardbibliothek nur ein grundlegendes Minimum darstellt, enthält Go einen vollwertigen HTTP-Server, einen Client für die Arbeit mit JSON, leistungsstarke Tools für die Nebenläufigkeit und sogar einen Profiler. Im Folgenden finden Sie eine detaillierte Aufschlüsselung der wichtigsten Pakete.



1. Paket fmt und io: Grundlage der Ein-/Ausgabe

Das Paket fmt ist das Erste, auf das ein Anfänger stößt. Es bietet die Funktionen Printf, Sprintf und Scanf für formatierte Aus- und Eingabe. Die wahre Stärke liegt jedoch im Paket io und seinen Schnittstellen Reader und Writer.

package main

import ( "fmt" "io" "strings")

func main() { // io.Reader — jede Datenquelle reader := strings.NewReader("Hallo, Go!") data, _ := io.ReadAll(reader) fmt.Println(string(data)) // Ausgabe: Hallo, Go!}


2. Paket net/http: Erstellen eines Webservers in 5 Zeilen

Go ist bekannt für seine integrierte HTTP-Unterstützung. Das Paket net/http ermöglicht es, einen vollwertigen Webserver ohne externe Abhängigkeiten zu starten. Es ist das ideale Werkzeug für Microservices und APIs.

package main

import ( "fmt" "net/http")

func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hallo, %s!", r.URL.Path[1:])}

func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) // Server auf Port 8080}


3. Paket encoding/json: Arbeiten mit JSON ohne Schmerz

Serialisierung und Deserialisierung von Daten sind häufige Aufgaben. Das Paket encoding/json verwendet Struktur-Tags für ein flexibles Mapping von Feldern. Es ist schneller als viele Drittanbieter-Bibliotheken, da es auf der für Go optimierten Reflexionsebene arbeitet.

package main

import ( "encoding/json" "fmt")

type User struct { Name string `json:"name"` Age int `json:"age"`}

func main() { jsonStr := `{"name":"Alice","age":30}` var user User json.Unmarshal([]byte(jsonStr), &user) fmt.Printf("%+v", user) // Ausgabe: {Name:Alice Age:30}}


4. Paket sync: Werkzeuge für Nebenläufigkeit

Go wurde für Multithread-Anwendungen entwickelt. Das Paket sync bietet Mutex, RWMutex, WaitGroup und Once. Das wichtigste Juwel ist jedoch sync.Map, eine threadsichere Map, die für Szenarien mit häufigem Lesen optimiert ist.

package main

import ( "fmt" "sync")

func main() { var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(n int) { defer wg.Done() fmt.Println("Goroutine:", n) }(i) } wg.Wait() // Warten auf das Ende aller Goroutinen}


5. Paket strings und strconv: Arbeiten mit Text

Das Paket strings enthält Funktionen zum Suchen, Ersetzen, Teilen und Zusammenfügen von Zeichenketten. strconv ist für die Umwandlung von Zeichenketten in Zahlen und umgekehrt sowie für das Escapen von Zeichen zuständig. Diese Pakete sind in Assembler geschrieben und arbeiten mit maximaler Leistung.

package main

import ( "fmt" "strings" "strconv")

func main() { // strings phrase := "hello world" fmt.Println(strings.ToUpper(phrase)) // HELLO WORLD

// strconv num, _ := strconv.Atoi("42") fmt.Println(num + 8) // 50}


6. Paket testing: Integrierte Tests

Go enthält ein leistungsstarkes Framework für Tests

Empfehlungen