Opzioni ai Comandi
E' possibile riconoscere opzioni del comando, con una certa variabilità di formati.
Le opzioni possono essere stringhe, numeri o booleani.
Per ciascuna di loro occore predefinire il nome, il valore di default e una descrizione, tramite varie funzioni del package flag
a seconda del tipo di opzione.
La funzione Parse
quindi scandisce e interpreta la linea di comando.
(600command-line-flags.go):
// I flag servono a definire opzioni
package main
import "flag"
import "fmt"
func main() {
// Opzione stringa con nome, valore default, descrizione
// Ritorna un puntatore
wordPtr := flag.String("word", "foo", "a string")
// Opzione intero
numbPtr := flag.Int("numb", 42, "an int")
// Opzione booleana
boolPtr := flag.Bool("fork", false, "a bool")
// Opzione che usa una variabile già esistente
var svar string
flag.StringVar(&svar, "svar", "bar", "a string var")
// Fa il parse della linea di comando
flag.Parse()
// Stampa delle opzioni acquisite o i loro default
// con accesso tramite puntatore
fmt.Println("word:", *wordPtr)
fmt.Println("numb:", *numbPtr)
fmt.Println("fork:", *boolPtr)
// Notare che la sottostante variabile
// svar riceve un valore dalle opzioni
fmt.Println("svar:", svar)
fmt.Println("tail:", flag.Args())
}
// Provare il comportamento con:
// eseguibile -word=sam
// eseguibile --word=sam
// eseguibile --word=sam --word=sam --numb=88 --fork=true john smith
// eseguibile --word=sam --word=sam --numb=88 john smith --fork
// eseguibile --word=sam --word=sam --numb=88 john smith --fork
// eseguibile --help
// eseguibile --fred=33
Un vantaggio è la possibilità di acquisire da opzione il valore di una variabile dichiarata all'interno del programma, con la funzione StringVar
. Occorre passare come primo argomento l'indirizzo della variabile di appoggio.