Ce face flag.Bool
flag.Bool definește un comutator. -v sau -v=true îl fac true; -v=false îl face false. Valorile acceptate sunt cele din strconv.ParseBool: 1, t, true, 0, f, false etc.
Spre deosebire de celelalte opțiuni, valoarea nu poate fi dată separat: -v false înseamnă -v (adică true) urmat de argumentul obișnuit false, care oprește citirea opțiunilor.
Parametri
| Parametru | Descriere |
|---|---|
name |
Numele opțiunii. |
value |
Valoarea implicită (de obicei false). |
usage |
Descrierea pentru ajutor. |
Ce returnează
Un *bool.
Exemple
Exemplul 1: Mod detaliat și simulare
package main
import (
"flag"
"fmt"
"os"
)
func main() {
os.Args = []string{"sterge-vechi", "-v", "-simulare=true"}
detaliat := flag.Bool("v", false, "afișează fiecare fișier")
simulare := flag.Bool("simulare", false, "nu șterge nimic, doar arată")
flag.Parse()
for _, f := range []string{"log-2023-01.txt", "log-2023-02.txt"} {
if *detaliat {
fmt.Println("de șters:", f)
}
if !*simulare {
os.Remove(f)
}
}
fmt.Println("simulare:", *simulare)
}
Rezultat
de șters: log-2023-01.txt
de șters: log-2023-02.txt
simulare: true
Exemplul 2: Capcana „-v false”
package main
import (
"flag"
"fmt"
"os"
)
func main() {
os.Args = []string{"program", "-v", "false", "-x"}
v := flag.Bool("v", false, "detalii")
flag.Parse()
fmt.Println("v =", *v)
fmt.Println("argumente rămase:", flag.Args())
}
Rezultat
v = true
argumente rămase: [false -x]
Greșeli frecvente
- Scrii
-v falseși te aștepți lafalse. Folosește-v=false. - Definești o opțiune
Boolcu valoarea implicitătrue; utilizatorul trebuie să scrie-optiune=falseca s-o oprească, ceea ce e neintuitiv. Preferă un nume negativ:-fara-culori.
Comenzi înrudite
flag.StringVar: Definesc opțiuni care scriu valoarea direct într-o variabilă existentă (text, întreg, boolean), fără pointer returnat.flag.Parse: Citește opțiunile din linia de comandă (os.Args) și completează variabilele definite cu flag.String, flag.Int etc.flag.Args: Returnează argumentele obișnuite rămase după opțiuni: toate (Args), unul anume (Arg) sau câte sunt (NArg).