Comprendre les arguments en ligne de commande
L'entrée en ligne de commande est un moyen fondamental pour les utilisateurs d'interagir avec les applications d'interface en ligne de commande (CLI). En Golang, les arguments en ligne de commande sont passés au programme lorsqu'il est exécuté et peuvent être accédés via le slice os.Args
.
Récupération basique des arguments
Voici un exemple simple de récupération des arguments en ligne de commande :
package main
import (
"fmt"
"os"
)
func main() {
// os.Args[0] is the program name itself
// os.Args[1:] contains the actual arguments
args := os.Args[1:]
fmt.Println("Number of arguments:", len(args))
for i, arg := range args {
fmt.Printf("Argument %d: %s\n", i, arg)
}
}
Types d'arguments et analyse
Les arguments en ligne de commande sont généralement passés sous forme de chaînes de caractères. Pour différents types d'entrées, vous devrez les analyser :
graph TD
A[Raw String Arguments] --> B{Parse to Desired Type}
B --> |Integer| C[strconv.Atoi()]
B --> |Float| D[strconv.ParseFloat()]
B --> |Boolean| E[strconv.ParseBool()]
Modèles d'arguments courants
Modèle |
Description |
Exemple |
Options simples |
Options à un seul caractère ou mot |
-h , --help |
Paires clé-valeur |
Arguments avec des valeurs associées |
--name=John |
Arguments positionnels |
Arguments basés sur leur position |
./program input.txt output.txt |
Utilisation du package flag
La bibliothèque standard de Golang offre un moyen plus robuste de gérer les arguments en ligne de commande :
package main
import (
"flag"
"fmt"
)
func main() {
// Define flags
name := flag.String("name", "Guest", "Your name")
age := flag.Int("age", 0, "Your age")
// Parse the flags
flag.Parse()
fmt.Printf("Name: %s, Age: %d\n", *name, *age)
}
Bonnes pratiques
- Validez et nettoyez toujours les entrées
- Fournissez des instructions d'utilisation claires
- Gérez les erreurs d'analyse potentielles
- Utilisez des noms d'options significatifs
Considérations concernant la gestion des erreurs
Lorsque vous travaillez avec des entrées CLI, prévoyez et gérez toujours les erreurs potentielles :
package main
import (
"fmt"
"os"
"strconv"
)
func main() {
if len(os.Args) < 2 {
fmt.Println("Usage: program <number>")
os.Exit(1)
}
num, err := strconv.Atoi(os.Args[1])
if err != nil {
fmt.Println("Invalid input. Please provide a number.")
os.Exit(1)
}
fmt.Println("Parsed number:", num)
}
Conseil : Lorsque vous développez des applications CLI sur LabEx, testez toujours soigneusement votre validation d'entrée pour garantir des interfaces robustes et conviviales.