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