CLI-Frameworks für Go (Golang): vollständiger Überblick und Vergleich

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

CLI-Frameworks für Go (Golang): ausführliche Anleitung



Go (Golang) ist eine Sprache, die sich ideal für die Erstellung von Kommandozeilen-Tools (CLI) eignet. Dank schneller Kompilierung, integrierter Unterstützung für Nebenläufigkeit und einfacher Verteilung als einzelne Binärdatei ist Go zum De-facto-Standard für die Entwicklung von CLI-Anwendungen geworden. Für die Erstellung komplexer, benutzerfreundlicher und skalierbarer Kommandozeilenschnittstellen reicht die Standardbibliothek flag jedoch oft nicht aus. Hier kommen spezialisierte Frameworks ins Spiel. In diesem Artikel betrachten wir die drei beliebtesten CLI-Frameworks für Go im Detail: Cobra, urfave/cli und Kong, vergleichen ihre Funktionen und zeigen Anwendungsbeispiele.



Warum sollte man ein CLI-Framework verwenden?

Die Entwicklung einer CLI-Anwendung von Grund auf kann schnell chaotisch werden, insbesondere wenn es um Folgendes geht:

  • Unterstützung von verschachtelten Befehlen (Subcommands) und Flags.
  • Automatische Generierung von Hilfetexten (--help).
  • Fehlerbehandlung und Argumentvalidierung.
  • Autovervollständigung (bash/zsh completion).

Frameworks lösen diese Probleme, indem sie eine fertige Architektur und einen Satz von Werkzeugen bereitstellen.



1. Cobra — der König der CLI in Go

Cobra ist das beliebteste Framework zur Erstellung von CLI-Anwendungen in Go. Es wird in Giganten wie Kubernetes, Hugo, Docker und GitHub CLI verwendet. Cobra basiert auf dem Konzept von Befehlen, Argumenten und Flags.



Hauptfunktionen von Cobra:

  • Befehle und Unterbefehle: Jede Aktion ist ein Befehl (app serve, app init).
  • Flags: Globale (--verbose) und lokale für den Befehl.
  • Automatische Hilfe: Wird aus den Befehlsbeschreibungen generiert.
  • Autovervollständigung: Integrierte Unterstützung für bash, zsh, fish und PowerShell.
  • Code-Generator: Das Dienstprogramm cobra-cli erstellt ein Projektskelett.


Codebeispiel mit Cobra:

package main

import ( "fmt" "github.com/spf13/cobra")

func main() { var rootCmd = &cobra.Command{ Use: "greet", Short: "Greet is a simple CLI tool", Long: "A simple CLI tool to greet people.", Run: func(cmd *cobra.Command, args []string) { fmt.Println("Hello! Use 'greet hello --name' to greet someone.") }, }

var name string var helloCmd = &cobra.Command{ Use: "hello", Short: "Greet a person", Run: func(cmd *cobra.Command, args []string) { fmt.Printf("Hello, %s!", name) }, }

helloCmd.Flags().StringVarP(&name, "name", "n", "World", "Name to greet") rootCmd.AddCommand(helloCmd) rootCmd.Execute()}

Ausführung: go run main.go hello --name=PythonLib gibt Hello, PythonLib! aus.



2. urfave/cli — Einfachheit und Minimalismus

Früher bekannt als codegangsta/cli, zeichnet sich dieses Framework durch seine Einfachheit und elegante API aus. Es eignet sich hervorragend für kleine und mittlere Projekte, die nicht die volle Leistungsfähigkeit von Cobra benötigen.



Wesentliche Merkmale von urfave/cli:

  • Deklarativer Stil: Die Anwendung wird als Datenstruktur beschrieben.
  • Automatische Hilfegenerierung: Schön und lesbar.
  • Unterstützung von Aktionen: Jeder Befehl hat seine eigene Handler-Funktion.
  • Integrierte Flag-Typen: Zeichenketten, Zahlen, boolesche Werte, Dauer und sogar Dateien.


Codebeispiel mit urfave/cli:

package main

import ( "fmt" "log" "os"

"github.com/urfave/cli/v2")

func main() { app := &cli.App{ Name: "calc", Usage: "A simple calculator", Comman

Empfehlungen