Ce face flag.String
flag.String declară o opțiune care primește un text. Returnează un *string; după flag.Parse() citești valoarea cu *nume. Dacă opțiunea lipsește din linia de comandă, valoarea este value.
Textul usage apare în ajutorul afișat la -h. Dacă pui un cuvânt între backtick-uri în el (de exemplu `fisier`), acesta apare ca nume al valorii în ajutor.
Parametri
| Parametru | Descriere |
|---|---|
name |
Numele opțiunii, fără cratimă: "iesire" devine -iesire. |
value |
Valoarea implicită. |
usage |
Descrierea pentru ajutor. |
Ce returnează
Un *string care va conține valoarea după Parse.
Exemple
Exemplul 1: Fișier de ieșire și format
package main
import (
"flag"
"fmt"
"os"
)
func main() {
os.Args = []string{"export", "-iesire", "clienti.csv"}
iesire := flag.String("iesire", "raport.txt", "fișierul în care se scrie")
format := flag.String("format", "csv", "formatul: csv sau json")
flag.Parse()
fmt.Printf("export în %s, format %s\n", *iesire, *format)
}
Rezultat
export în clienti.csv, format csv
Exemplul 2: Valori cu spații și validare
package main
import (
"flag"
"fmt"
"os"
"slices"
)
func main() {
os.Args = []string{"salut", "-nume=Ana Maria", "-limba", "fr"}
nume := flag.String("nume", "vizitator", "pe cine salutăm")
limba := flag.String("limba", "ro", "limba: ro sau en")
flag.Parse()
if !slices.Contains([]string{"ro", "en"}, *limba) {
fmt.Printf("limba %q nu este acceptată, folosesc ro\n", *limba)
*limba = "ro"
}
fmt.Printf("Bună, %s! (limba: %s)\n", *nume, *limba)
}
Rezultat
limba "fr" nu este acceptată, folosesc ro
Bună, Ana Maria! (limba: ro)
Greșeli frecvente
- Folosești pointerul fără
*:fmt.Println(iesire)afișează o adresă de memorie, nu textul. - Definești aceeași opțiune de două ori: programul se oprește cu panică „flag redefined”.
Comenzi înrudite
flag.StringVar: Definesc opțiuni care scriu valoarea direct într-o variabilă existentă (text, întreg, boolean), fără pointer returnat.flag.Int: Definește o opțiune număr întreg (-n=10) și returnează un pointer la valoarea ei.flag.Parse: Citește opțiunile din linia de comandă (os.Args) și completează variabilele definite cu flag.String, flag.Int etc.flag.PrintDefaults: Afișează lista tuturor opțiunilor definite, cu tipul, descrierea și valoarea implicită.