flag.Int în Go

Definește o opțiune număr întreg (-n=10) și returnează un pointer la valoarea ei.

Sintaxă
func Int(name string, value int, usage string) *int

Ce face flag.Int

flag.Int funcționează ca flag.String, dar valoarea este convertită în int. Sunt acceptate și formatele 0x1F (hexazecimal), 0o17 (octal) și 0b101 (binar), precum și separatorul _ (1_000).

Dacă valoarea dată nu este un număr valid, flag.Parse afișează eroarea și oprește programul. Pentru alte tipuri există flag.Int64, flag.Uint, flag.Uint64.

Parametri

Parametru Descriere
name Numele opțiunii.
value Valoarea implicită.
usage Descrierea pentru ajutor.

Ce returnează

Un *int.

Exemple

Exemplul 1: Numărul de rezultate și pagina

package main

import (
    "flag"
    "fmt"
    "os"
)

func main() {
    os.Args = []string{"cauta", "-limita", "5", "-pagina=3"}

    limita := flag.Int("limita", 20, "câte rezultate pe pagină")
    pagina := flag.Int("pagina", 1, "numărul paginii")
    flag.Parse()

    start := (*pagina - 1) * *limita
    fmt.Printf("afișez rezultatele %d-%d\n", start+1, start+*limita)
}

Rezultat

afișez rezultatele 11-15

Exemplul 2: Valoare greșită (cu FlagSet, fără oprirea programului)

Un FlagSet cu ContinueOnError afișează eroarea și ajutorul, apoi returnează eroarea în loc să oprească programul. Atenție: variabila nu mai are valoarea implicită (20), ci 0; după o eroare nu te baza pe ea.

package main

import (
    "flag"
    "fmt"
    "os"
)

func main() {
    fs := flag.NewFlagSet("cauta", flag.ContinueOnError)
    fs.SetOutput(os.Stdout)
    limita := fs.Int("limita", 20, "câte rezultate pe pagină")

    err := fs.Parse([]string{"-limita=multe"})
    fmt.Println("eroare:", err)
    fmt.Println("limita după eroare:", *limita)
}

Rezultat

invalid value "multe" for flag -limita: parse error
Usage of cauta:
  -limita int
    	câte rezultate pe pagină (default 20)
eroare: invalid value "multe" for flag -limita: parse error
limita după eroare: 0

Greșeli frecvente

  • Nu verifici intervalul: -limita=-5 este un int valid. Validează valorile după Parse.

Comenzi înrudite

  • flag.StringVar: Definesc opțiuni care scriu valoarea direct într-o variabilă existentă (text, întreg, boolean), fără pointer returnat.
  • flag.Float64: Definește o opțiune număr cu zecimale (-tva=0.19) și returnează un pointer la valoarea ei.
  • flag.String: Definește o opțiune text (-nume=valoare) ș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.